Этот вершинный шейдерный код работает на каждом устройстве, за исключением Galaxy Note 2. gl_Position = uMVPMatrix * vPosition;
где, если я отменяю матричное умножение на: gl_Position = vPosition * uMVPMatrix;
Я действительно могу заставить вещи появляться.Странная ошибка OpenGL ES 2.0 на Galaxy Note 2
К сожалению, обратное потребовало бы, чтобы я полностью переписал свою библиотеку преобразований.
У кого-нибудь есть понимание того, что может быть причиной этого, является ли это ошибкой драйвера opengl с устройством?
Shader код
private final String vertexShaderCode =
// This matrix member variable provides a hook to manipulate
// the coordinates of the objects that use this vertex shader
"uniform mat4 uMVPMatrix;" +
"attribute vec4 vPosition;" +
"attribute vec2 a_TexCoordinate;" +
"varying vec2 v_TexCoordinate;" +
"void main() {" +
// the matrix must be included as a modifier of gl_Position
"v_TexCoordinate = a_TexCoordinate;" +
"gl_Position = uMVPMatrix * vPosition;" +
"}";
private final String fragmentShaderCode =
"precision mediump float;" +
"uniform sampler2D u_Texture;" +
"varying vec2 v_TexCoordinate;" +
"void main() {" +
" gl_FragColor = texture2D(u_Texture, v_TexCoordinate);" +
//" gl_FragColor = vec4(v_TexCoordinate, 0, 1);" +
"}";
Имеют ли то, что «vPosition» и «uMVPMatrix» имеют одинаковую точность? – keaukraine
keaukraine, спасибо за ответ. Я действительно не уверен, если я не использую какой-либо модификатор точности, требуется ли это по умолчанию. Я попытался добавить «точность mediump float»; + к вершинеShaderCode, но это не повлияло. – Paul
Это может произойти на устройствах Android, которые разные производители реализуют какую-то часть системы по-разному. Я уже заметил, что воспроизведение музыки (звука) немного отличается при реализации на HTC или Samsung. Это было то же самое с размером текстуры, имеющим мощность 2, HTC мог справиться с любым размером текстуры, в то время как Samsung требовал от них силы 2. Я бы сказал, что вы просто делаете оператор if, если есть телефон Samsung и используете разные шейдеры для этого. – Jani