读书人

OpenGL环境筹建(Windows下VS2010)

发布时间: 2013-04-02 12:35:26 作者: rapoo

OpenGL环境搭建(Windows下VS2010)

环境搭建需要注意的:

1.要自己去下载 glut3.7包(SDK非源码),解压,然后把glut32.dll的文件都放到windows/system32文件夹里面去;

把glut32.lib放到VC的C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib文件夹里面;

把glut.h头文件放到C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl文件夹下。
2.也有可能因为直接copy的代码有隐藏文字,既每行有两个看不见的字符,要把每行紧挨着语句的前两个字符删除掉,就可以了。

关于第一点的原因:glut.h下面有三个静态库的引入(如下),所以直接拷贝到工程目录下面是不可以的。

#include <GL/gl.h>

#include <GL/glu.h>

# ifdef GLUT_USE_SGI_OPENGL

# pragma comment (lib, "opengl.lib") /* link with SGIOpenGL for Windows lib */

# pragma comment (lib, "glu.lib") /* link withSGI OpenGL Utility lib */

# pragma comment (lib, "glut.lib") /* link withWin32 GLUT for SGI OpenGL lib */

# else

# pragma comment (lib, "opengl32.lib") /* link withMicrosoft OpenGL lib */

# pragma comment (lib, "glu32.lib") /* link withMicrosoft OpenGL Utility lib */

# pragma comment (lib, "glut32.lib") /* link withWin32 GLUT lib */

# endif

上述的头文件路径里面还有gl.h,glu.h;

Lib文件路径里面还有opengl32.lib,glu32.lib;

Dll文件路径里面还有opengl32.dll,glu32.dll;

Windows的Win32库,MFC/ATL/WTL库里面也是这样的文件放置组织结构,所以无论如何都必须保证gl.h,glu.h及其库文件的引入,这里是用glut的方式来使用Opengl函数。

编译通过的小demo:

#include <gl/glut.h>
void init()
{
::glClearColor(1.0,1.0,1.0,0.0);
::glMatrixMode(GL_PROJECTION);
::gluOrtho2D(0.0,400.0,0.0,550.0);
}
typedef struct S2DFPoint//用矩阵比用结构体或类的方式易于初始化
{
GLfloat p[2];
}TwoDFPoint;
void lineSegment()
{
::glClear(GL_COLOR_BUFFER_BIT);
::glColor3f(1.0,0.0,0.0);
int point1[]={10,10};
int point2[]={350,530};
int point3[]={380,40};
int point4[]={160,500};
int point5[]={20,350};

//::glBegin(GL_LINES);
//::glBegin(GL_LINE_STRIP);
::glBegin(GL_LINE_LOOP);

::glVertex2iv(point1);
::glVertex2iv(point2);
::glVertex2iv(point3);
::glVertex2iv(point4);
::glVertex2iv(point5);

::glEnd();
::glFlush();
}
void main(int argc,char** argv)
{
::glutInit(&argc,argv);
::glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

::glutInitWindowPosition(50,100);
::glutInitWindowSize(900,550);
::glutCreateWindow("Hello OpenGL program I am Jeese!");
init();
::glutDisplayFunc(lineSegment);
::glutMainLoop();
}



读书人网 >VSTS

热点推荐