OpenGL二-基础渲染

一、基础图形管线

OpenGL中图元只不过是顶点的集合以预定义的方式结合在一起。

管线分为:2个部分,上半部分是客户机端,下半部分是服务器端。

服务器和客户端是功能和运行上都是异步的。它们是各自独立的软件块或硬件块。

二、着色器

渲染过程,必备的2个着色器“顶点着色器”和“片元着色器” 。

三、3种向OpenGL着色器传递渲染数据的方法

属性
Uniform
纹理

3.1属性

属性: 就是对一个顶点都要作改变的数据元素。实际上,顶点位置本身就是一个属性。属性可以是浮点类型、整型、布尔类型。

3.2 Uniform值

通过设置Uniform变量就紧接着发送一个图元批次命令。Uniform 变量实际上可以无限次限制地使用,设置一个应用于整个表面的单个颜色值。还可以设置一个时间值。

3.3纹理

纹理!后续课程详讲!

3.4 输出

输出数据:简单的从一个阶段传递到下一个阶段。客户端的代码接触不到这些内部变量。我们的OpenGL开发暂时接触不到! 

四、创建坐标系

五、透视投影setPerspective(float fFov,float fAspect,float fNear,float fFar)

六、使用存储着色器

6.1.使用背景

6.2存储着色器的使用

单位着色器
平面着色器
上色着色器
默认光源着色器
点光源着色器
纹理替换矩阵
纹理调整着色器
纹理光源着色器

//定义着色器    
GLShaderMananger shaderManager;
 //初始化着色器
shaderManager.lnitalizeStockShaders()
 //使用
shaderManager userStockManager(参数列表)

七、OpenGL图元


线
线带
线环
三角形
三角形金字塔
三角形带
三角形扇

OpenGL图元----点
// 修改点的大小
glPointSize(4.0f);

 // 设置点的大小范围,点和点之间的距离
GLfloat sizes[2] = {2.0f,4.0f};
GLfloat stepSize = 1.0f;

// 获取点的大小范围和步长
glGetFloatv(GL_POINT_SIZE RANGE,sizes);
glGetFloatv(GL_POINT_GRAULRITY,&stepSize);

// 3.通过使用程序点大小模式设置点大小
glEnable(GL_PROGAM_POINT_SIZE);

 // GLSL程序
gl_PointSize = 5.0f;

八、GlBatch 容器(帮助类)

void GLBatch::Begain(Gl eunm primitive,GLuint nVerts,GLuint nTe xttureUnints = 0);

void GLBatch::CopyNormalDataf(GLfloat *vNorms);

void GLBatch::CopyColorData4f(GLfloat *vColors);

void GLBatch::CopyTexCoordData2f(GLFloat *vTextCoords,GLuint u iTextureLayer)

你可能感兴趣的:(OpenGL二-基础渲染)