2014-01-28 4 views
2
#include<Windows.h> 
#include <GL/freeglut.h> 
#include <GL/glew.h> 
#include<gl/GLU.h> 
#include<gl/GL.h> 
#include<iostream> 
using namespace std; 

const int width=1280; 
const int height=960; 
void OnInit(); 
void OnShutdown(); 
void OnResize(); 
void OnRender(); 

int main(int argc, char** argv) { 
glutInit(&argc, argv); 
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | 
GLUT_RGBA); 
glutInitContextVersion (3,7 ); 
glutInitContextFlags (GLUT_CORE_PROFILE | GLUT_DEBUG); 
glutInitContextProfile(GLUT_FORWARD_COMPATIBLE); 
glutInitWindowSize(width, height); 
glutCreateWindow("getting started with understanding"); 



glewExperimental = GL_TRUE; 
GLenum err = glewInit(); 
if (GLEW_OK != err){ 
cerr<<"Error: "<<glewGetErrorString(err)<<endl; 
} else { 
if (GLEW_VERSION_3_3) 
{ 
cout<<"Driver supports OpenGL 3.3\nDetails:"<<endl; 
} 
} 
cout<<"\tUsing glew "<<glewGetString(GLEW_VERSION)<<endl; 
cout<<"\tVendor: "<<glGetString (GL_VENDOR)<<endl; 
cout<<"\tRenderer: "<<glGetString (GL_RENDERER)<<endl; 
cout<<"\tVersion: "<<glGetString (GL_VERSION)<<endl; 
cout<<"\tGLSL:"<<glGetString(GL_SHADING_LANGUAGE_VERSION)<<endl; 


OnInit(); 
glutCloseFunc(OnShutdown); 
glutDisplayFunc(OnRender); 
glutReshapeFunc(OnResize); 
glutMainLoop(); 
return 0; 

} 

void OnInit() { 
glClearColor(1,0,0,0); 
cout<<"Initialization successfull"<<endl; 
} 
void OnShutdown() { 
cout<<"Shutdown successfull"<<endl; 
} 
void OnResize(int nw, int nh) { 

} 
void OnRender() { 
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 
glutSwapBuffers(); 
} 

Когда я строй исходного кода в Microsoft Visual Studio, дающий «е ошибка : \ vs2012 \ В.- \ Include \ GL \ glew.h (84): со смертельным исходом ошибка C1189: #error: gl.h, включенная до glew.h ". И у меня также есть glew.h перед gl.h В чем может быть проблема?фатальные gl.h ошибки включены до того glew.h

ответ

5

freeglut.h будет включать gl.h. Вы должны указать glew.h до freeglut.h. glew - очень хорошая и популярная библиотека, но это gl.h included before glew.h является основным ограничением!

+0

Я вижу. Но это не должно было быть такой проблемой. Они могли бы решить эту проблему, добавив в защитные оболочки glu.h или gl.h или просто директиву '#pragma once', как это всегда происходит в таких ситуациях, чтобы не добавлять один и тот же заголовочный файл несколько раз. Я не понимаю, почему они этого не сделали. Я злюсь, потому что я не понимаю, почему такие простые вещи должны усложняться. Представьте, что кто-то пытается устранить такую ​​проблему с ограниченным доступом к Интернету или с немногими знающими людьми. Он никогда не сможет продолжить! Так или иначе. Просто говорю. Благодарю. –

Смежные вопросы