openGL之API学习(一六七)默认着色器 顶点属性索引 别名索引

本文介绍了OpenGL在调用glDrawElements或glDrawArrays时如何使用默认着色器。默认顶点着色器利用gl_Vertex处理顶点,片段着色器使用gl_Color处理颜色。gl_Vertex的索引为0,gl_Color的索引为2,而gl_Normal的索引为1。OpenGL ES 3.0至少支持16个顶点属性,具体数量可通过GL_MAX_VERTEX_ATTRIBS查询。文中也提及了osg中设置顶点属性索引的方法。
摘要由CSDN通过智能技术生成

opengl在调用glDrawElements或glDrawArrays进行绘制时,如果没有指定用户自定义的顶点、片段等着色器,opengl会为用户设置一个默认的着色器,类似于

顶点着色器
#version 330

void main()
{
    
}
片段着色器
#version 330

void main()
{
    
}

在顶点着色器中默认使用gl_Vertex绘制顶点。

在片段着色器中默认使用gl_Color绘制颜色。

gl_Vertex、gl_Color一般通过glVertexAttribPointer、glVertexAttrib*等传递数据。

gl_Vertex在着色器中的默认索引值为0,对应于layout(location=0)。

gl_Color的默认索引值为2。

此外还有:

gl_Normal的默认索引值为1。

顶点属性索引值的数量和GPU硬件有关系,所有 OpenGL ES 3.0 的实现必须至少支持16个vertex attribute,实际支持的个数可以通过GL_MAX_VERTEX_ATTRIBS查询
 

GLint maxVertexAttribs; // n will be >= 16
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxVertexAttribs);

osg中是这样设置顶点属性索引默认值的

osg/State.cpp
void State::resetVertexAttributeAlias(b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值