2

私は数年間、Windows/SDL で OpenGL をプログラミングしており、かなり多くの高度なことを行うことができます。

私は Android と libgdx に切り替え、ここ数日、回転する立方体だけの簡単なデモをまとめようとしました。

libgdxObjLoaderMeshクラスを使用して、ブレンダーからエクスポートされたキューブ メッシュ (法線と UV 座標を含む) をロードし、テクスチャを適用しようとしました。キューブを描画しますが、テクスチャから 1 つのテクセルのみを使用してモデル全体をカバーしているようです。

テクスチャ座標を再確認し、特定の座標を使用して平面を手動でコーディングしてテストしましたが、同じことが起こっています。

これが頂点シェーダーです。

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): Main Source

これが悪い質問である場合は、お知らせください。これは私の最初の質問です。

4

1 に答える 1

1

画像で遊んで、答えを見つけました。

32ビットの.pngRGBA8888を使用していましたが、libgdxにそのことを伝えていませんでした。

RGBA8888として画像を取り込むように切り替えました:

t = new Texture(Gdx.files.internal("Image/r3.png"),Format.RGBA8888,true);

少し羊っぽい感じがします、ごめんなさい。

編集: 不思議なことに、透明性はありません...

于 2012-06-12T09:33:33.533 に答える