#opengl
#opengl
Вопрос:
Проверьте созданное мной изображение, но то, что я хочу сделать, это создать эти прямоугольники с границами и установить другой цвет фона. Как я могу это сделать?
glRectf(top_left_x, top_left_y, bottom_right_x, bottom_right_y)?
if loop==0:
ratio = 0.10
glBegin(GL_QUADS)
while ratio <= 1.0:
width = window_width/2
height = window_height
long_length = width * ratio
short_length = height* (1.0 - ratio)
top_left_x = (width - long_length) / 2.0
top_left_y = (height - window_height * (1.0-ratio)) /2
bottom_right_x = top_left_x long_length
bottom_right_y = top_left_y short_length
glColor(1.0,1.0,1.0,0.5)
glVertex3f(top_left_x, top_left_y, 0.0)
glVertex3f(top_left_x long_length, top_left_y, 0.0)
glVertex3f(bottom_right_x,bottom_right_y, 0.0)
glVertex3f(bottom_right_x-long_length,bottom_right_y, 0.0)
ratio = 0.05
glEnd()
Ответ №1:
Вы можете нарисовать прямоугольник, не заполненный таким образом:
glBegin(GL_LINES);
glVertex2d(top_left_x, top_left_y);
glVertex2d( top_right_x, top_right_y);
glVertex2d( bottom_right_x,bottom_right_y);
glVertex2d(bottom_left_x,bottom_left_y);
glVertex2d(top_left_x, top_left_y);
glEnd();
OpenGL использует конечный автомат. Итак, для изменения цвета просто поместите :
glColor3f (R, G, B);
перед рисованием примитивов.
Итак, смешивая это, ваш шаг должен быть:
- выберите цвет заливки
- нарисовать прямоугольную область с помощью glRectf
- выберите цвет границы
- нарисуйте незаполненный прямоугольник с помощью кода, который я опубликовал
Разумеется, эти шаги повторяются для каждого прямоугольника, который вы рисуете.
Комментарии:
1. Я изменил то, что вы предоставили, но я получил точно такое же изображение. Еще какие-нибудь проблемы?
2. @user469652: вы не опубликовали никакого кода. С этой единственной строкой я не могу сказать вам больше.
3. @user469652: прежде всего, поместите glColor перед glBegin
4. @user469652: если использование glColor не решает проблему, проверьте значения ваших координат. Я предлагаю вам начать рисовать один прямоугольник, и когда у вас получится то, что вы хотите, попробуйте с полным рисунком.
5. @user469652: или использовать GL_LINE_STRIP и удалить последний вызов glVertex