Почему у меня OpenGL работает некорректно или вообще не работает?

Учу OpenGL, часть хидеров нашел в C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl , часть скачал.
Но примеры из СуперКниги либо не работают, либо рисует какую ту ересь(пример должен выводить точки в виде спирали, выводится только две), хотя переписываю все в точности.
Из примеров с интернета тоже самое. У меня Visual Studio Express 2012.
Вот код последнего примера переписанного мной:
Код
#include "stdafx.h"
#include "glut.h"
#include "GL.h"
#include "GLAux.h" 
#include "GLU.H"

void DisplayFunc();
void reshape(GLsizei w, GLsizei h);
void reshape(int w, int h)
{
		if (h = 0) h=1;
		glMatrixMode(GL_PROJECTION);
		glLoadIdentity();
		if (w <= h)
		{
			gluOrtho2D(0.0, 30.0 * (float)w / (float)h, 0.0, 30.0);
		}
		else
		{
			gluOrtho2D(0.0, 30.0 * (float)w / (float)h, 0.0, 30.0);
		}
		glClearColor(0.0, 0.0, 0.0, 0.0);
		
		glViewport(0, 0, w, h);
 
		glMatrixMode(GL_PROJECTION);
		glLoadIdentity();
}
 
void DisplayFunc()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glColor3f(1.0f, 0.0f, 0.0f);
	glRectf(0.0f, 0.0f, 25.0f, 25.0f);
	glFlush();
}
 
int main (int argc, char * argv[])
{
        glutInit(&argc, argv);
		glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA | GLUT_DEPTH);
        glutInitWindowSize(640, 480);
        glutCreateWindow("OpenGL lesson 1");   
        glutReshapeFunc(reshape);
        glutDisplayFunc(DisplayFunc);
		glutMainLoop();
        return 0;
}

Может я что то делаю не так?
  • Вопрос задан
  • 3666 просмотров
Пригласить эксперта
Ответы на вопрос 5
MrGobus
@MrGobus
Иван
При создании окна вы указываете GLUT_DOUBLE, что означает что будет включен режим двойной буферизации, то есть картинка рисуется в памяти машины а потом выводится на экран с целью избежать мерцания и видимой прорисовки. Для того, чтобы изображение появилось на экране при завершении построения кадра нужно вызывать функцию смены кадра, в случае с глут это вроде была glutSwapBuffers.
В вашем примере это после glFlush();
Ответ написан
Комментировать
Может это из за библиотек, если код ты полностью переписал с книги то проблем теоретически быть не может.
Ответ написан
@nesterione
У меня проблемы возникали только из-за не установленных драйверов. Правда на win я использовал gcc (mingw). Но разницы быть не должно. Можете попробовать использовать другую реализацию opengl, например mesa 3d. (Вы же компилятору указываете путь к dll opengl32 и glu32? просто многие знакомые забывали, и код не компилился. А еще рекомендую nehe.gamedev.net , есть хорошие лекции, с примерами кода, с компиляцией которых проблем не возникает (проверено)
Ответ написан
@pigah
Возможно примеры старые используйте лучше эту книгу
Ответ написан
Комментировать
afiskon
@afiskon
Возможно, производитель видюхи сделал кривые драйверы. Я слышал, это бывает довольно часто. Попробуйте запустить примеры на другом компьютере.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы