无法在iOS

时间:2016-05-19 09:01:23

标签: ios opengl-es

我正在尝试在我的iPhone 5s上使用OpenGL ES2播放H.264视频,而且我已经在屏幕上显示了图片。但是,在尝试使用不同的顶点位置和texCoord时,图片不会填满整个屏幕。我还检查了我的5s上的glViewport是(0,0,640,1136)。

这是 screenshot

我的设置:

    GLfloat vertices[] = {
    -1.0f, -1.0f,
    1.0f, -1.0f,
    -1.0f, 1.0f,
    1.0f, 1.0f
}; 
glEnableVertexAttribArray(ATTRIB_VERTEX);
glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, GL_FALSE, 0, vertices);

GLfloat texCoords[] = {
    0.0f, 1.0f,
    1.0f, 1.0f,
    0.0f, 0.0f,
    1.0f, 0.0f
};
glEnableVertexAttribArray(ATTRIB_TEXCOORD);
glVertexAttribPointer(ATTRIB_TEXCOORD, 2, GL_FLOAT, GL_FALSE, 0, texCoords);

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

有没有人对此问题有任何想法。非常感谢任何帮助。

修改

这是我的顶点着色器:

attribute vec4 position;
attribute vec2 texCoord;
uniform float preferredRotation;

varying vec2 texCoordVarying;

void main(void) {
    gl_Position = position;
    texCoordVarying = texCoord;
}

和我的片段着色器:

varying highp vec2 texCoordVarying;
precision mediump float;

uniform sampler2D SamplerY;
uniform sampler2D SamplerUV;
uniform mat3 colorConversionMatrix;

void main(void) {
    mediump vec3 yuv;
    lowp vec3 rgb;
    yuv.x = texture2D(SamplerY, texCoordVarying).r - (16.0/255.0);
    yuv.yz = texture2D(SamplerUV, texCoordVarying).rg - vec2(0.5, 0.5);

    rgb = colorConversionMatrix * yuv;
    gl_FragColor = vec4(rgb, 1);

 //   gl_FragColor = vec4(1, 0, 0, 1);
}

解决

很抱歉我的错误,我试图在'glLinkProgram'之前使用'glBindAttribLocation'。在我改变位置后,现在看起来很好。

0 个答案:

没有答案