Lee*_*ton 3 android opengl-es-2.0
我在将一小部分vec4s向上传到GPU 时遇到了一些问题.我把这个问题煮到了最小的代码来抛出错误.
这是我的片段着色器:
precision mediump float;
uniform vec4 test[5];
void main() {
gl_FragColor = test[0]+test[1]+test[2]+test[3]+test[4];
}
Run Code Online (Sandbox Code Playgroud)
顶点着色器很简单:
attribute vec4 vPosition;
void main(){
gl_Position = vPosition;
}
Run Code Online (Sandbox Code Playgroud)
以下是尝试上传vec4矢量的代码:
float[] testBuffer = new float[4*5];
// Fill with 1/5s for now
Arrays.fill(testBuffer, 0.2f);
// Get the location
int testLoc = GLES20.glGetUniformLocation(mProgram, "test");
checkGlError("glGetUniformLocation test");
// Upload the buffer
GLES20.glUniform4fv(testLoc, 5, testBuffer, 0);
checkGlError("glUniform4fv testBuffer");
Run Code Online (Sandbox Code Playgroud)
第二次调用时发现错误checkGlError(),错误代码为GL_INVALID_OPERATION.
我已经阅读了关于glUniform的文档,所有的大小和类型看起来都是正确的.testLoc是一个有效的位置句柄,上传片段和顶点着色器代码时没有错误.
我只是看不出我做错了什么!有任何想法吗?
- 更新
| 归档时间: |
|
| 查看次数: |
5250 次 |
| 最近记录: |