Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Invisiblle
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 4
1

Мерцание в OpenGL

14.04.2011, 15:28. Просмотров 2530. Ответов 2
Метки нет (Все метки)

Добрый день, у меня возникла проблема с OpenGL. Я пытаюсь рисовать прямоугольник, но почему-то происходит мерцание экрана при запуске программы. Вот код:

C++
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// мерцания.cpp: определяет точку входа для консольного приложения.
//
 
 
#include <gl\glut.h>
 
GLfloat spin=0.0;
 
void init(void)
{
    glClearColor(0.0,0.0,0.5,0.0);
    glShadeModel(GL_FLAT);
}
 
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);   
 
    glPushMatrix();
 
    glRotatef(spin,0.0,0.0,1.0);
    
    glColor3ub(255,255,255);
    glBegin(GL_QUADS);      
        glVertex2f(-0.65f, -0.65f);         
        glVertex2f( 0.65f, -0.65f);     
        glVertex2f( 0.65f,  0.65f);         
        glVertex2f(-0.65f,  0.65f); 
    glEnd;
    
    glPopMatrix();
 
    glutSwapBuffers();
}
 
void spinDisplay(void)
{
    spin=spin+1.0;
    if(spin>360.0) spin=spin-360.0;
    glutPostRedisplay();
}
void reshape(int w, int h)
{
    glViewport(0,0,(GLsizei) w, (GLsizei) h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-1.0,1.0,-1.0,1.0,-1.0,1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
 
void mouse(int button,int state,int x,int y)
{
    switch(button)
    {
    case GLUT_LEFT_BUTTON:
        if (state==GLUT_DOWN) glutIdleFunc(spinDisplay); break;
    case GLUT_RIGHT_BUTTON: 
        if (state==GLUT_DOWN) glutIdleFunc(0); break;
    }
}
 
int main(int argc, char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(100,100);
    glutCreateWindow("Двойная буферизация");
    init();
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutMouseFunc(mouse);
    glutMainLoop();
    return 0;
}

В чем проблема и как ее решить?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 15:28
Ответы с готовыми решениями:

Мерцание картинки OpenGL. Как исправить или что нужно добавить?
Начинаю знакомиться с OpenGL, задание было нарисовать картинку: белый треугольник, пурпурный и...

Создаю игру с научным уколоном на C++/opengl. Как подключить openGL и добиться кроссплатформенности
Я читал про opengl - для его инициализации нужно создавать windows - окно. Для linux видимо...

(2 главы перевода книги доступно) OpenGL Programming Guide, Version 4.3, 8th Edition - OpenGL
Продолжая тему с переводом книги http://www.cyberforum.ru/opengl/thread1551398.html Выкладываю для...

Ошибки при подключение opengl, немного не связанные с opengl
#include &lt;windows.h&gt; #include &quot;stdafx.h&quot; #include &lt;gl/gl.h&gt; #include &lt;gl/glu.h&gt; #include...

OpenGL.Урок 1. простой OpenGL-проект
Не компилируется кодю #include &lt;GL\glut.h&gt; void DrawLine() { ...

2
adico
13 / 13 / 4
Регистрация: 24.02.2011
Сообщений: 64
11.05.2011, 09:47 2
Проблема в том что Вы рекурсивно обновляете экран функцией glutPostRedisplay();
Следовательно попробуйте закоментить
C++
1
2
3
4
5
6
void spinDisplay(void)
{
        spin=spin+1.0;
        if(spin>360.0) spin=spin-360.0;
        //glutPostRedisplay();
}
0
Invisiblle
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 4
11.05.2011, 13:41  [ТС] 3
Проблема была в отсутствии скобок в glEnd
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2011, 13:41

Сильно отличаются OpenGL ES и OpenGL и как?
Сильно отличаются OpenGL ES и OpenGL и как?

OpenGL - VS2008 Инициализация OpenGL (Glut)
Правильно ли я написал код для выведения 3d изображения на экран? Вот пару недель наверно искал...

Не загружается текстура в OpenGL (OpenGL + Классы)
Здравствуйте! Пишу движок для игры. Первый прототип я сделал процедурно. Все работает как надо. ...


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

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

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