OpenGL入门


无意义的感慨

曾经一直幻想有一天能够像大家一样,写着博客,一遍激励自己,一遍给曾经帮过我的众多网友一点有意义的内容,不过个人比较懒,一直拖,如今已经快大学毕业了,时间怎么也算不上紧了,所以就逼迫自己写些东西吧,希望能有一点点帮助。

注意:笔者采用的是window下的VS2013,如果是你们是其他系统就不用看了。


内容开始

使用openGL需要配置,网上资料众多,这里就做一个小小的归纳吧

根据《OpenGL超级宝典》一书中的要求,需要先配置文件包括free_glut以及GLTools。虽然free_glut包含了glut中的全部内容,但是说句实话有点虚,所以我这里也把glut配置了。

glut配置

打开glut,其中包含有了如下的内容



将其中.h的头文件导入复制到VS目录下VC的include中(最好是再考到GL文件夹中,没有的就新建一个吧[因为在书附加的代码中导入时为 GL/GLUT.h]说明是GL文件下的GLUT.h文件),如果和笔者一样装vs是走默认位置的话地址应该是:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\

复制完成后,将lib也就是SourceBrower复制到VS目录下VC的lib文件夹中

最后把DLL结尾的这些文件考到操作系统下的System32中,因为我们采用的是win32 Console Application 所以采用的是在32位的系统,如果不放心也建议把DLL考到SystemWow64下(对应64位系统)

一般地址在:C:\Windows\System32

这样就完成了对glut的配置

free_glut配置

对于free_glut,网上最主流的free_glut需要自己建立库文件,(太白了,暂时不会,所以采用老一点的free_glut),free_glut 2.8中已经建立好动态库文件了,所以

与配置glut时相同

freeglut.h,freeglut_ext.h,freeglut_std.h放到VS下VC的include文件夹中

freeglut.dll放到VS下VC的lib中

freeglut(应用程序扩展)放到System32中


GLTools配置

默默地吐槽一句,GLTools在网络中的资源良莠不齐啊。

GLTools打开资源,里面为



与上面的步骤不同,因为没有了应用程序扩展程序,所以不直接配置,笔者采用的是动态库导入的方式

首先记住得GLTools所在的位置(笔者将GLTools文件夹复制到VS下),

建立win32 Console Application项目,把然后右键创建的项目,选择Add,如图

x

选择已存在文件

然后把之间GLTools下的release中的gltools.lib选中,确定



之后会在项目的source下出现gltools.lib

接着将把这个gltools的lib文件找出来复制到VS下VC的lib文件夹下

配置结束


接下来试一试书中提供的程序

注意在include<GL\GLUT.h>前需要写上 #define GLUT_DISABLE_ATEXIT_HACK

以为OpenGL库与stdlib.h中存在类似的部分,如果win32在编译过程中,会忽略掉其中的一部分,所以会报错,具体请参看:

http://blog.sina.com.cn/s/blog_7e7b66a80101a9yk.html

知道大家都比较追求效率,所以把我中书上敲下了的直接粘贴到就行了

#include <GLTools.h>
#include <GLSHaderManager.h>

#ifdef _APPLE_
#include <glut/glut.h>
#else
#define GLUT_DISABLE_ATEXIT_HACK
#define FREEGLUT_STATIC
#include <GL/GLUT.H>
#endif

GLBatch triangleBatch;
GLShaderManager shaderManager;

void ChangeSize(int w, int h){
	glViewport(0,0,w,h);
}

void SetupRC(){
	glClearColor(0.0f,0.0f,1.0f,1.0f);
	shaderManager.InitializeStockShaders();

	GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
		0.5f, 0.0f, 0.0f,
		0.0f, 0.5f, 0.0f };
	triangleBatch.Begin(GL_TRIANGLES,3);
	triangleBatch.CopyVertexData3f(vVerts);
	triangleBatch.End();
}

void RenderScene(void){
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

	GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
	shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);
	triangleBatch.Draw();
	glutSwapBuffers();
}
int main(int argc, char* argv[]){
	gltSetWorkingDirectory(argv[0]);
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);
	glutInitWindowSize(800,600);
	glutCreateWindow("Triangle");
	glutReshapeFunc(ChangeSize);
	glutDisplayFunc(RenderScene);

	GLenum err = glewInit();
	if (GLEW_OK != err){
		fprintf(stderr,"GLEW Error: %s\n",glewGetErrorString(err));
		return 1;
	}
	SetupRC();

	glutMainLoop();
	return 0;
}
最后附上需要的资料:

http://download.youkuaiyun.com/detail/warband/9726682

如果有各位有多余的积分,可以选择下面的地址,谢谢(资源是一样的)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值