Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > GL_POINTS в OPEN GL |
Автор: Piff 7.9.2012, 04:31 | ||
Помогите пожалуйста решить вопрос с написанием программы для университета. Нужно в OpenGL на С++ написать моё имя при помощи функции GL_POINTS. Я так понимаю, что даная функция выводит только лишь точки, координаты которых я сам и задаю. Но вот как сделать имя? Помогите написать только имя, остальное я сам допишу. Так же, подскажите, как нарисовать простые фигуры, такие как: круг, звезда, треугольник и трапеция. Спасибо большое за помощь. Я уже написал основу для программы:
|
Автор: LeonidPr 7.9.2012, 07:45 | ||||
ну и так далее, набирая из точек все что угодно. Хотя лучше наверное будет линиями это сделать. Точки разрозненно будут выглядеть. Умея рисовать точки, вы можете набрать ими все что вам угодно. Просто подставляйте нужные координаты. А фигуры то же рисуются по координатам углов.
Это треугольник. дальше думаю сами сделаете. Вспомните как в школе на Бейсике рисовали, тут почти что так же, можете взять листочек с карандашом и сначала расставить координаты точек для нужной вам фигуры, а потом запихать их в glVertex. Добавлено через 7 минут и 1 секунду P.S.Давно в OpenGL ничего не делал. пример с треугольником компактнее будет сделать через GL_LINE_STRIP. |
Автор: Piff 7.9.2012, 09:12 |
Так это было бы легко, нам нужно только точки использовать и сделать прямую из точек пр помощи алгоритма Брезенхэма. Я не знаю как его реализовать в OpenGL. Хотя я пытался через цикл выкрутиться, программа вообще не показывает точки :( |
Автор: LeonidPr 7.9.2012, 09:53 |
Так, вопрос: вам в задании сказано OpenGL использовать, или это вы сами решили? Просто имхо, это извращение - реализовывать алгоритм Брезенхэма в OpenGL. Просто в окошке с использованием GDI я еще понимаю. А вообще какая разница, как рисовать точку. Сделайте функцию DrawPoint(float x, float y). И при реализации алгоритма рисования линии когда нужно поставить пиксел, вызывайте эту функцию с нужными координатами. |
Автор: Piff 7.9.2012, 18:37 | ||
В задании сказано. Я учусь в университете в США. Вот так нас тут гоняют ![]() Я пытался через for выкрутится, не работает :( for (int i=-0.85; i=0.85; i+=0.01) glVertex2f(i, 0); glVertex2f(0, i); Но он почему-то не рисует. Почему делаю 0.01, так как у меня окно 1000 на 1000, но точка с координатой 1, 1 вылезает за окно. Работаю с тысячными, не знаю поему. Помогите пожалуйста реализовать этот алгоритм. Вот он есть на С++, но как переделать его???
|
Автор: tzirechnoy 7.9.2012, 18:44 | ||
int i =-0.85 -- это очень херовая идея. |
Автор: Alexeis 7.9.2012, 20:35 |
Не знаю можно ли вам так делать, но я бы отренедерил текст на битмапе средствами GDI, затем прошелся по массиву пикселей битмапа и там где цвет пикселя отличается от белого поставил бы соответствующую точку. |
Автор: Piff 8.9.2012, 01:33 |
Так кто-нибудь может помочь переписать алгоритм с С++ на OpenGL? |
Автор: Amp 8.9.2012, 11:58 |
Так а в чем проблема я так и не понял? Устанавливаешь ортографическую проекцию в координатах окна (left = 0, right = width, bottom = 0, top = height) и рисуешь точки в этих координатах, словно у тебя GDI какой-нибудь. |
Автор: LeonidPr 8.9.2012, 16:45 | ||
Я же написал про функцию DrawPoint(float x, float y). В вашем коде её роль выполняет SetPixel.
Попробуйте! |
Автор: Piff 8.9.2012, 22:58 |
Я в СИ почти не разбираюсь. Вы не могли бы с кодом подсказать, пожалуйста? |