1.第一个三角形

来源:互联网 发布:js 使input不可编辑 编辑:程序博客网 时间:2024/05/22 00:35
#include <GLTools.h>           
#include <GLShaderManager.h>   
#define FREEGLUT_STATIC
#include <GL/glut.h>           

GLBatch triangleBatch;


//着色器管理器
GLShaderManager shaderManager;


//窗口大小被改变时被调用 
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
}


//
void SetupRC()
{
//设置清除颜色 
glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
    
//初始化着色器管理器
shaderManager.InitializeStockShaders();




//三角形的顶点  x, y, z
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 };


//使用GLT_SHADER_IDENTITY(存储着色器)渲染
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
triangleBatch.Draw();


//交换缓冲区
glutSwapBuffers();
}


int main(int argc, char** argv)
{
//设置当前工作目录(windows可忽略)
//glSetWorkingDirectory(argv[0]);


//初始化OpenGL库
glutInit(&argc, argv);


//显示模式 (双缓冲窗口 | RGBA颜色模式 | 开启深度测试 | 模板缓冲区) 
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);


//设置窗口大小
glutInitWindowSize(800, 600);


//创建窗口并指定窗口标题
glutCreateWindow("OpenGL Window");


//窗口大小
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;

}





0 0
原创粉丝点击