画个三角形-----------openGL学习记录

课本中的画一个三角形,自己按照课本写了一遍。

//导入库文件
#include <GLTools.h>
#include <GLShaderManager.h>
//导入对应平台的头文件
#ifdef _APPLE_
#include <glut.h>
#else
#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.25f, 0.25f, 0.25f, 1.0f);   //设置背景色
	
	//着色器初始化
	shaderManager.InitializeStockShaders();
	
	//画三角形
	GLfloat vVer[]={-0.5f, 0.0f, 0.0f,
	                0.0f, 0.5f, 0.0f,
	                0.5f, 0.0f, 0.0f,};
	//批量渲染三角形
	triangleBatch.Begin(GL_TRIANGLES,3);//开始
	triangleBatch.CopyVertexData3f(vVer);//三角形顶点数据
	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(err != GLEW_OK)
	{
		fprintf(stderr, "GLEW Error : %s\n", glewGetErrorString(err) );
		return 1;
	}

	SetupRC();  //预加载纹理、建立几何图形、渲染器等操作

	glutMainLoop();

	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值