OpenGL(二)第一个OpenGL程序绘制三角形

一、代码

#include 
#include 
#include 

GLBatch batch; //批处理
GLShaderManager shaderManager; //着色器管理

void ChangeSize(int width, int height)
{
	glViewport(0, 0, width, height);  //改变窗口大小
}

void SetupRc(void)
{
	glClearColor(0.0f, 0.0f, 1.0f, 1.0f);    //背景颜色

	shaderManager.InitializeStockShaders();  //初始化着色器

	//定义顶点数据
	GLfloat vVertex[] = {-0.5f, -0.5f, 0.0f,
						 0.5f, -0.5f, 0.0f,
						 0.0f, 0.5f, 0.0f};
	batch.Begin(GL_TRIANGLES, 3);
	batch.CopyVertexData3f(vVertex);  //复制顶点数据到批处理中
	batch.End();
}

void MyDisplay(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); //清除特定的缓冲区
	GLfloat vRed[] = { 0.0f, 1.0f, 0.0f, 1.0f };  //RGBA
	shaderManager.UseStockShader(GLT_SHADER_IDENTITY ,vRed);  //颜色传递到存储着色器中
	batch.Draw();        //绘制
	glutSwapBuffers();   //交换buffer,双缓冲
}

int main(int argc, char * argv[])
{
	gltSetWorkingDirectory(argv[0]);   //设置工作目录
	glutInit(&argc, argv);             //初始化glut
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL); //显示类型模式
	glutInitWindowSize(800, 600);      //窗口大小
	glutCreateWindow("第一个OpenGL");  //创建窗口
	glutReshapeFunc(ChangeSize);       //改变窗口大小
	glutDisplayFunc(MyDisplay);        //显示绘制回调
	GLenum err = glewInit();           //驱动程序初始化过程是否出错
	if (err != GLEW_OK)
	{
		return 1;
	}
	SetupRc();                         
	glutMainLoop();                    //调用之后才能显示
	return 0;
}

二、运行效果

OpenGL(二)第一个OpenGL程序绘制三角形_第1张图片




你可能感兴趣的:(OpenGL)