美文网首页Python-flask入门操作
OpenGL光照和法线代码注释6.1

OpenGL光照和法线代码注释6.1

作者: 数字d | 来源:发表于2019-05-29 10:10 被阅读0次

    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

    相关文章

      网友评论

        本文标题:OpenGL光照和法线代码注释6.1

        本文链接:https://www.haomeiwen.com/subject/khketctx.html