Открыть GL: рисовать прямоугольники с границами?

#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);
  

перед рисованием примитивов.

Итак, смешивая это, ваш шаг должен быть:

  1. выберите цвет заливки
  2. нарисовать прямоугольную область с помощью glRectf
  3. выберите цвет границы
  4. нарисуйте незаполненный прямоугольник с помощью кода, который я опубликовал

Разумеется, эти шаги повторяются для каждого прямоугольника, который вы рисуете.

Комментарии:

1. Я изменил то, что вы предоставили, но я получил точно такое же изображение. Еще какие-нибудь проблемы?

2. @user469652: вы не опубликовали никакого кода. С этой единственной строкой я не могу сказать вам больше.

3. @user469652: прежде всего, поместите glColor перед glBegin

4. @user469652: если использование glColor не решает проблему, проверьте значения ваших координат. Я предлагаю вам начать рисовать один прямоугольник, и когда у вас получится то, что вы хотите, попробуйте с полным рисунком.

5. @user469652: или использовать GL_LINE_STRIP и удалить последний вызов glVertex