gpt4 book ai didi

android - 顶点着色器不在 galaxy tab10 (tegra 2) 上运行

转载 作者:行者123 更新时间:2023-11-29 02:03:24 28 4
gpt4 key购买 nike

我在 HTC Desire S 上创建了一个使用 GLES2.0 的应用程序。它适用于 HTC,但不适用于 Samung Galaxy tab10.1。程序无法链接 (GLES20.glGetProgramiv(mProgram, GLES20.GL_LINK_STATUS, linOk,0) gives-1) 并且 glGetError() 给我一个错误 1282(无效操作)。

当我替换这一行时(在着色器中):

graph_coord.z = (texture2D(mytexture, graph_coord.xy / 2.0 + 0.5).r);

通过

graph_coord.z = 0.2;

它也适用于 galaxy 选项卡。我的着色器看起来像这样:

 private final String vertexShaderCode =
"attribute vec2 coord2d;" +
"varying vec4 graph_coord;" +
"uniform mat4 texture_transform;" +
"uniform mat4 vertex_transform;" +
"uniform sampler2D mytexture;" +
"void main(void) {" +
" graph_coord = texture_transform * vec4(coord2d, 0, 1);" +
" graph_coord.z = (texture2D(mytexture, graph_coord.xy / 2.0 + 0.5).r);" +
" gl_Position = vertex_transform * vec4(coord2d, graph_coord.z, 1);" +
"}";

那是附加着色器的地方:

  mProgram = GLES20.glCreateProgram();             // create empty OpenGL Program
GLES20.glAttachShader(mProgram, vertexShader); // add the vertex shader to program
GLES20.glAttachShader(mProgram, fragmentShader); // add the fragment shader to program
GLES20.glLinkProgram(mProgram); // create OpenGL program executables
int linOk[] = new int[1];
GLES20.glGetProgramiv(mProgram, GLES20.GL_LINK_STATUS, linOk,0);

纹理加载到这里:

 GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture_id[0]);
GLES20.glTexImage2D(
GLES20.GL_TEXTURE_2D, // target
0, // level, 0 = base, no minimap,
GLES20.GL_LUMINANCE, // internalformat
size, // width
size, // height
0, // border, always 0 in OpenGL ES
GLES20.GL_LUMINANCE, // format
GLES20.GL_UNSIGNED_BYTE, // type
values
);

最佳答案

这似乎是 Nvidia Tegra GPU 的限制。我能够在 Tegra 3 GPU 上重现错误。尽管顶点着色器中的纹理查找理论上是 OpenGL ES 2.0 的一部分,但根据 Nvidia 的说法,Tegra 的顶点着色器纹理单元数 (GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS) 为 0 (PDF: OpenGL ES 2.0 Development for the Tegra Platform)。

关于android - 顶点着色器不在 galaxy tab10 (tegra 2) 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11398114/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com