大佬教程收集整理的这篇文章主要介绍了android – OpenGL ES 2.0指定位置属性vec3或vec4,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
GLbyte vShaderStr[] = "attribute vec4 vPosition; \n" "void main() \n" "{ \n" " gl_Position = vPosition; \n" "}; \n";
稍后在文本中,应用程序将与片段着色器一起编译顶点着色器.
使用glBindAttribLOCATIOn建立一个句柄,将应用程序顶点数据传递给着色器:
// Bind vPosition to attribute 0 glBindAttribLOCATIOn(programObject,"vPosition");
现在链接了两个着色器,程序已准备就绪.
用例是这样的:
GLfloat vVertices[] = {0.0f,0.5f,0.0f,-0.5f,0.0f}; ... // Load the vertex data glVertexAttribPointer(0,3,GL_FLOAT,GL_falSE,vVertices); glEnabLevertexAttribArray(0); glDrawArrays(GL_TRIANGLES,3);
意思是:
> glVertexAttribPointer(0,vVertices):
将顶点数据传递给程序,使用位置0,每个顶点有3个组件,类型为float,不使用规范化.
> glEnabLevertexAttribArray(0):
着色器将使用传递的数据.
> glDrawArrays(GL_TRIANGLES,3); :
着色器将使用在指定数组中找到的第一个(也是唯一的)三个顶点执行代码以绘制单个三角形.
我的问题是:
>顶点着色器期望四个组件的顶点位置(x,y,z,w),程序只传递三个组件(x,z)数据
这为什么有效?
>着色器需要vec4,w组件必须为1才能按预期工作.
哪个步骤负责正确添加w组件?
如该帖所述,它出现在gles规范中:http://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.24.pdf
在本文件的第2.8节中,它说:
以上是大佬教程为你收集整理的android – OpenGL ES 2.0指定位置属性vec3或vec4全部内容,希望文章能够帮你解决android – OpenGL ES 2.0指定位置属性vec3或vec4所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。