Форум программистов, компьютерный форум, киберфорум
Наши страницы

OpenGL

Войти
Регистрация
Восстановить пароль
 
Darkos
8 / 8 / 5
Регистрация: 16.05.2014
Сообщений: 112
Завершенные тесты: 1
#1

Некорректная отрисовка полигона - OpenGL

21.09.2017, 17:42. Просмотров 155. Ответов 1

Здравствуйте. Недавно начал с OpenGL работать. Рисую куб из шести полигонов. Последний полигон некорректно отображался(в виде треугольника, т.е. пол полигона не было). Я заменил в коде отрисовку полигона на два треугольника но проблема осталась. Теперь не отображается четверть полигона.

Код отрисовки:
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
glBegin(GL_POLYGON);        //1
        glColor4f(1,0,0, 1);
 
        glVertex3f(-100, 100, 0);
        glVertex3f(100, 100, 0);
        glVertex3f(100, -100, 0);
        glVertex3f(-100, -100, 0);
    glEnd();
 
    glBegin(GL_POLYGON);        //2
        glColor4f(0,1,0, 1);
 
        glVertex3f(-100, 100, 100);
        glVertex3f(100, 100, 100);
        glVertex3f(100, -100, 100);
        glVertex3f(-100, -100, 100);
    glEnd();
 
    glBegin(GL_POLYGON);        //3
        glColor4f(0,0,1, 1);
 
        glVertex3f(-100, 100, 0);
        glVertex3f(-100, 100, 100);
        glVertex3f(-100, -100, 100);
        glVertex3f(-100, -100, 0);
    glEnd();
 
    glBegin(GL_POLYGON);        //4
        glColor4f(1,1,0, 1);
 
        glVertex3f(100, 100, 0);
        glVertex3f(100, 100, 100);
        glVertex3f(100, -100, 100);
        glVertex3f(100, -100, 0);
    glEnd();
 
    glBegin(GL_POLYGON);        //5
        glColor4f(1,0,1, 1);
 
        glVertex3f(-100, 100, 0);
        glVertex3f(100, 100, 0);
        glVertex3f(100, 100, 100);
        glVertex3f(-100, 100, 100);
    glEnd();
 
    glBegin(GL_TRIANGLES);        //6
        glColor4f(0,1,1, 1);
 
        glVertex3f(-100,-100, 0);
        glVertex3f(-100, -100, 100);
        glVertex3f(100, -100, 0);
 
        glVertex3f(100,-100, 100);
        glVertex3f(100, -100, 0);
        glVertex3f(-100, -100, 0);
    glEnd();


Настройки вывода:
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void GLScene::resizeGL(int nWidth, int nHeight)
{
    w=nWidth;
    h=nHeight;
 
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    float aspectRatio = (GLfloat)w / (GLfloat)h;
    gluPerspective(45,aspectRatio,1,800);
    glViewport(0, 0, (GLint)nWidth, (GLint)nHeight);
    glTranslatef(0,0,-700);
 
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_COLOR_MATERIAL);
    glDepthFunc ( GL_LEQUAL );
}


Скриншот окна:
Некорректная отрисовка полигона

Подскажите, что я неправильно делаю?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2017, 17:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Некорректная отрисовка полигона (OpenGL):

Вращение полигона - OpenGL
glLoadIdentity(); //glTranslatef(0.0,0.0,0.0); Что нужно сделать тут //glRotatef(rotateQuad,0.0,0.0,10.0); Вот тут...

Деформация изгиба полигона - Графика
Я, в принципе, понимаю, что такое деформация изгиба. Но не понимаю, какой формулой задать вершины после деформации. Пожалуйста, любая...

Виды заливки полигона - OpenGL
Строю всякие многоугольники в с# с помощью opengl. Вот заинтересовало, как можно реализовать заливку полигонов разных видов (штриховая,...

Вращение выбранного полигона - OpenGL
Когда использую glRotate у меня начинают вращаться все ректенглы в сцене. Как сделать так, чтобы вращался только тот, на который наведен...

Геометрия. Оболочка полигона - Графика
Дан произвольный полигон число точек весьма большое - несколько сот тысяч. Необходимо создать оболочку-полигон на данный из меньшего...

Пересечение линии и полигона - OpenGL
Подскажите пожалуйста, как реализовать функцию пересечения линии и полигона в трёхмерной системе координат. Допустим у меня есть...

1
snake32
1639 / 1093 / 160
Регистрация: 26.02.2009
Сообщений: 4,041
Записей в блоге: 5
21.09.2017, 18:03 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Пробуте так:
C++
1
2
3
4
5
6
7
8
9
10
11
  glBegin(GL_TRIANGLES);        //6
        glColor4f(0,1,1, 1);
 
        glVertex3f(-100,-100, 0);
        glVertex3f(-100, -100, 100);
        glVertex3f(100, -100, 0);
 
        glVertex3f(100,-100, 100);
        glVertex3f(100, -100, 0);
        glVertex3f(-100, -100, 100); // z был 0
    glEnd();
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2017, 18:03
Привет! Вот еще темы с ответами:

Определение полигона под мышью - OpenGL
Есть полигон на экране. Нужно определить, когда курсор мыши наведен на него. Пробовал так: public void render() { //...

Битые пикселы по краям полигона - OpenGL
Положил текстуру на квадратный полигон, сделал, чтобы полигон медленно двигался на меня. Периодически по краям этого полигона...

Движение двух точек полигона - OpenGL
Всем доброго времени суток! Подскажите а как сделать что бы полигон двигался по окружности как крышка коробки, т.е. что бы двигались две...

Наложить на 2 перекрестных полигона текстуру травы - OpenGL
Возникла такая проблема. Хочу наложить на 2 перекрестных полигона текстуру травы( эдакая имитация 3d). При наложении, на полигоне помимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru