OpenGL ES で線を引くはのとても簡単だと思ってたが、実際にやってみるとうまく行かなくで、
今日一日で落ち込んでいました。
下記の様なコードでは線を引けないのはどうしてですかを何方を教えていただけませんか。
(他にTexture_2Dを有効にしていること以外に特別な処理はありません。)
void drawLine(GL10 gl) {
float lineVertices[] = { -10, -10, -10, 10,10,10 };
FloatBuffer line = makeFloatBuffer(lineVertices);
line.position(0);
gl.glColor4f(1.0f,.0f,0.0f,1.0f);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, line);
gl.glDrawArrays(GL10.GL_LINES, 0, 2);
}
public static FloatBuffer makeFloatBuffer(float[] arr) {
ByteBuffer bb = ByteBuffer.allocateDirect(arr.length * 4);
bb.order(ByteOrder.nativeOrder());
FloatBuffer fb = bb.asFloatBuffer();
fb.put(arr);
fb.position(0);
return fb;
}
よろしくお願いします
> 下記の様なコードでは線を引けないのはどうしてですかを何方を教えていただけませんか。
この部分だけでは何とも言えないと思います。
なぜ線が描画されないのかは、様々な要因が考えられます。
例えば、
・View(GLSurfaceView)の使用方法の問題
・描画色と同じ色で glClear してしまっている
・投影法の設定の問題(glFrustum 若しくは glOrtho の辺り)
・カメラの位置と向き(画面に見えない部分に描画されている可能性)
・glEnableClientState(GL_VERTEX_ARRAY); を忘れているとか
等々、直接 GL に関する部分の要因、GL 以外の要因がありますので、
出来るだけ全体を見せて頂いた方が問題を特定しやすくなります。
ただ、
> (他にTexture_2Dを有効にしていること以外に特別な処理はありません。)
とのことですが、下記コードではテクスチャ座標をセットされて
いないようですし、この部分だけを見る限りでは glColor4f で
指定した色で線を描画したいというように見えるのですがどうでしょうか。
そうだとすればテクスチャを有効にする必要はないです。
(glEnable (GL_TEXTURE_2D) を使ってますよね)
描画に必要の無いステートは無効にするのが GL で正しく描画し、且つ
パフォーマンスをあげるうえでの鉄則です。
2010/3/14 domanthan <doma...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
--
------------------:-)
Kenichi Takahashi