osg学习(七十一)如何给顶点着色器传递顶点数据

Posted hankern

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了osg学习(七十一)如何给顶点着色器传递顶点数据相关的知识,希望对你有一定的参考价值。

缩放不会影响传递到着色器中顶点坐标缩放

osg会自动向着色器传递osg_Vertex、osg_ModelViewProjectionMatrix等变量,不需要再定义,在着色器中直接使用即可。

设置顶点数据

osg/Geometry.cpp
void Geometry::setVertexArray(Array* array)

    _vertexArray = array;

两种上传方式

C++学习(三一一)AttributeDispatchers和VertexAttribArrayDispatch关系_hankern的博客-CSDN博客区别如下:https://blog.csdn.net/hankern/article/details/118859734

通过glVertexPointer向顶点着色器派发,通过gl_ModelViewProjectionMatrix gl_Vertex gl_Normal gl_MultiTexCoord1等访问相应的顶点属性信息。

osg/VertexArrayState.cpp
    virtual void dispatch(osg::State& /*state*/, const osg::Array* new_array)
    
        VAS_NOTICE<<"    VertexArrayDispatch::dispatch("<<new_array->getNumElements()<<")"<<std::endl;
        glVertexPointer(new_array->getDataSize(), new_array->getDataType(), 0, new_array->getDataPointer());
    

以上是关于osg学习(七十一)如何给顶点着色器传递顶点数据的主要内容,如果未能解决你的问题,请参考以下文章