Fab*_*n R 7 android opengl-es android-camera
我试图通过传递给OpenGL ES 2.0着色器的SurfaceTexture在GLSurfaceView中显示相机流.
我从这篇文章中汲取灵感.
图像已完成但未在我的平板电脑上正确显示.屏幕分为2x2部分.图像显示在左上部分,而其他三个部分显示为黑色.
我怀疑问题来自于我使用此处记录的序列返回的转换矩阵
updateTexImage();
getTransformMatrix(...);
Run Code Online (Sandbox Code Playgroud)
我在顶点着色器中传输此矩阵以生成片段着色器的纹理坐标.
顶点着色器:
attribute vec3 aPosition;
uniform mat4 uMvpTransform;
// Matrix retrieved by getTransformMatrix(...);
uniform mat4 uTexMatTransform;
varying vec2 vTexCoord;
void main(void)
{
gl_Position = uMvpTransform *vec4(aPosition.xyz, 1);
vec4 l_tex = uTexMatTransform*vec4(aPosition.xyz, 1);
vTexCoord=l_tex.xy;
}
Run Code Online (Sandbox Code Playgroud)
片段着色器:
#extension GL_OES_EGL_image_external : require
varying mediump vec2 vTexCoord;
uniform samplerExternalOES uSampler;
void main(void)
{
mediump vec4 l_tex = texture2D(uSampler, vTexCoord);
gl_FragColor=l_tex;
}
Run Code Online (Sandbox Code Playgroud)
纹理附加到以下方块:
// Image container
GLfloat l_vertices[] = {
-1.0f, 1.0f, 0.0f,
-1.0f, -1.0f, 0.0f,
1.0f, -1.0f, 0.0f,
1.0f, 1.0f, 0.0f };
Run Code Online (Sandbox Code Playgroud)
有没有人有类似的东西?
编辑于2012年11月3日:
顶点着色器的校正:
attribute vec3 aPosition;
attribute vec2 aTexCoord;
uniform mat4 uMvpTransform;
// Matrix retrieved by getTransformMatrix(...);
uniform mat4 uTexMatTransform;
varying vec2 vTexCoord;
void main(void)
{
gl_Position = uMvpTransform *vec4(aPosition.xyz, 1);
vec4 l_tex = uTexMatTransform*vec4(aTexCoord.xy,0, 1);
vTexCoord=l_tex.xy;
}
Run Code Online (Sandbox Code Playgroud)
有:
// Texture
GLfloat l_texCoord[] = {
0.0f, 1.0f,
0.0f, 0.0f,
1.0f, 0.0f,
1.0f, 1.0f
Run Code Online (Sandbox Code Playgroud)
};
小智 4
我已成功使用 SurfaceTexture 在自定义 opengl 纹理上绘制相机帧,而无需使用 android 提供的转换矩阵。
只需尝试按照正常纹理绘制的方式定义索引顶点和纹理即可。比如像这样。
const GLfloat Vertices[] = {0.5, -0.5, 0,
0.5, 0.5, 0,
-0.5, 0.5, 0,
-0.5, -0.5, 0};
const GLubyte Indices[] = { 0, 1, 2,
2, 3, 0 };
const GLfloat Textures[] = { 1.,0.,
0.,0.,
0.,1.,
1.,1. };
Run Code Online (Sandbox Code Playgroud)
您应该能够像使用普通纹理一样使用表面纹理。
如果您想要执行某种 3D 投影,这是一篇关于如何生成正确的 MVP 矩阵的好文章。您可以使用它与顶点着色器中的位置相乘。
| 归档时间: |
|
| 查看次数: |
6776 次 |
| 最近记录: |