Python-flask入门操作

OpenGL光照和法线代码注释6.1

2019-05-29  本文已影响0人  数字d

1. 创造金字塔批次类

    GLBatch  pyramidBatch;
    MakePyramid(pyramidBatch);

2.参数传递方法回顾

void MakePyramid(GLBatch& pyramidBatch) {
}

3.通过pyramidBatch组建三角形批次

/*     参数1:类型
      参数2:顶点数
      参数3:这个批次中将会应用1个纹理
      注意:如果不写这个参数,默认为0。
     */
    pyramidBatch.Begin(GL_TRIANGLES, 18, 1);

4.设置法线

   //    void Normal3f(GLfloat x, GLfloat y, GLfloat z);
     //Normal3f:添加一个表面法线(法线坐标 与 Vertex顶点坐标中的Y轴一致)
 //    表面法线是有方向的向量,代表表面或者顶点面对的方向(相反的方向)。在多数的光照模式下是必须使用。
     pyramidBatch.Normal3f(X,Y,Z);

5.设置纹理坐标

//    void MultiTexCoord2f(GLuint texture, GLclampf s, GLclampf t);
 //    参数1:texture,纹理层次,对于使用存储着色器来进行渲染,设置为0
 //    参数2:s:对应顶点坐标中的x坐标
    // 参数3:t:对应顶点坐标中的y
     (s,t,r,q对应顶点坐标的x,y,z,w)
     
     pyramidBatch.MultiTexCoord2f(0,s,t);

6. 向三角形批次类添加顶点数据(x,y,z);

     //void Vertex3f(GLfloat x, GLfloat y, GLfloat z);
     // void Vertex3fv(M3DVector3f vVertex);
      pyramidBatch.Vertex3f(-1.0f, -1.0f, -1.0f);

7.点光源着色器

 /*
     参数1:GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF(着色器标签)
     参数2:模型视图矩阵
     参数3:投影矩阵
     参数4:视点坐标系中的光源位置
     参数5:基本漫反射颜色
     参数6:图形颜色(用纹理就不需要设置颜色。设置为0)
     */
    shaderManager.UseStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF,
                                 transformPipeline.GetModelViewMatrix(),
                                 transformPipeline.GetProjectionMatrix(),
                                 vLightPos, vWhite, 0);

代码地址:https://gitee.com/xgkp/basic_texture_60.git

上一篇下一篇

猜你喜欢

热点阅读