opengl绘制一个简单三角形

在配置好OpenGL环境后,编写一个简单的OpenGL程序,体会一个完整的程序框架。下面的demo仅仅在蓝色的背景上绘制一个红色的三角形。代码参考自《OpenGL超级宝典(第5版)》

//Triangle.cpp
//our first opengl program that will just draw a triangle on the screen.

#include <GLTools.h>			//opengl toolkit
#include <GLShaderManager.h>            //shader manager class

#ifdef __APPLE__
#include <glut/glut.h>			//OS X  version of  GLUT
#else 
#define FREEGLUT_STATIC			//在windows和linux上,我们使用freeglut的静态库版本。
					//添加FREEGLUT_STATIC处理宏;
#include <GL/glut.h>			//windows FreeGlut equivalent
#endif

//GLBatch是GLTools库中包含一个简单的容器类,可看成是图元简单批次的容器。
GLBatch  triangleBatch;

//声明一个着色器管理器的实例,必须有着色器才能渲染.
GLShaderManager shaderManager;

void ChangeSize(int w,int h)//在窗口大小改变时接收新的高度和宽度
{
	glViewport(0,0,w,h);
}

void SetupRC()		//OpenGL函数起作用前必须创建一个渲染环境RC(rendering context),而glut第一次创建窗口时完成了这项工作。
{
	//blue background
	glClearColor(0.0f,0.0f,1.0f,1.0f);		//设置背景色,蓝色,但并不立即执行
	shaderManager.InitializeStockShaders();

	//load up a triangle 
	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();
}

//called to draw scene
void RenderScene(void)
{
	//clear the window with the current clearing color
	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[])
{
	//用来设定当前的工作目录,在windows中不必要,因为工作目录默认就是与可执行程序相同目录
	gltSetWorkingDirectory(argv[0]);

	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_STENCIL);//设置显示模式
	glutInitWindowSize(800,600);
	glutCreateWindow("create a triangle");

	glutReshapeFunc(ChangeSize);
	glutDisplayFunc(RenderScene);

	GLenum err=glewInit();		//glutMainLoop()之前完成两件事。第一件是初始化GLEW库。原因暂时不需要知道。
	if(GLEW_OK !=err)
	{
		fprintf(stderr,"GLEW Error:%s\n",glewGetErrorString(err));
		return 1;
	}
	 
	SetupRC();				//

	glutMainLoop();
	return 0;
}
执行的效果图如下,可以用鼠标拖拽窗口:


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值