Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – OpenGL ES 2.0指定位置属性vec3或vec4大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在OpenGL ES 2.0的介绍中,可以在这里找到: http://www.webreference.com/programming/opengl_es/2.html
定义了顶点着色器:
GLbyte vShaderStr[] =
   "attribute vec4 vPosition;   \n"
   "void main()                 \n"
   "{                           \n"
   "   gl_Position = vPosition; \n"
   "};                          \n";

vPosition属性一个四分量向量.

稍后在文本中,应用程序将与片段着色器一起编译顶点着色器.
使用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组件?

解决方法

大佬总结

以上是大佬教程为你收集整理的android – OpenGL ES 2.0指定位置属性vec3或vec4全部内容,希望文章能够帮你解决android – OpenGL ES 2.0指定位置属性vec3或vec4所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。