我已经在Windows/SDL上编写OpenGL几年了,并且能够用它做很多高级的事情。
我已经切换到Android和libgdx,在过去的几天里,我试图把一个简单的演示放在一起,只是一个旋转的立方体。
使用libgdx 的 ObjLoader
和 Mesh
类,我加载了一个从 blender 导出的立方体网格(带有法线和 UV 坐标),并尝试应用纹理,它绘制了一个立方体,但似乎只使用纹理中的一个纹素来覆盖整个模型。
我已经仔细检查了纹理坐标,甚至用特定坐标手动编码了一个平面进行测试,同样的事情正在发生。
这是顶点着色器:
attribute vec4 a_position;
attribute vec3 a_normal;
attribute vec2 a_texCoord;
uniform mat4 mvp;
varying vec3 outNormal;
varying vec2 outTexcd;
void main(){
outNormal = a_normal;
outTexcd = a_texCoord;
gl_Position = mvp * a_position;
}
还有片段着色器:
precision highp float;
varying vec3 outNormal;
varying vec2 outTexcd;
uniform sampler2D tex;
void main(){
vec3 norms = outNormal;
gl_FragColor = texture2D(tex,outTexcd);
}
但我不认为这就是问题所在。或者也许是这样,我不确定。
不想过多地堵塞这个问题,所以主要来源在这里(pastebin): 主要来源
如果这是一个糟糕的问题,请告诉我,这是我的第一个问题。
玩图像我找到了答案。
使用的是 32 位.png RGBA8888,但没有告诉 libgdx。
切换为以RGBA8888格式接收图像:
t = new Texture(Gdx.files.internal("Image/r3.png"),Format.RGBA8888,true);
我感到有点怯懦,对不起大家。
编辑:奇怪的是,虽然没有透明度...