0
のためのOpenGLでの基本的な長方形の枠を描き、 満たされた矩形は、[OK]を働いているんだけど、ここで私のRectangleクラスだ境界線を描画するための簡単な方法を見つけることができません。 2D描画APIのOpenGL ESのは、満たされた図形の自動「脳卒中」の概念がありませんほとんどのとは異なり私は単純な長方形の枠を描きたいアンドロイド
package{
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;
import javax.microedition.khronos.opengles.GL10;
public class Rectangle {
private float vertices[]={
-0.5f,0.5f, 0.0f,
-0.5f,-0.5f,0.0f,
0.5f,-0.5f,0.0f,
0.5f,0.5f,0.0f
};
// The colors mapped to the vertices.
float[] colors = {
1f, 0f, 0f, 1f, // vertex 0 red
1f, 0f, 0f, 1f, // vertex 1 green
1f, 0f, 0f, 1f, // vertex 2 blue
1f, 0f, 0f, 1f, // vertex 3 magenta
};
private short[] indices = {0,1,2,0,2,3};
private FloatBuffer vertexBuffer;
private ShortBuffer indexBuffer;
// Our color buffer.
private FloatBuffer colorBuffer;
public Rectangle(){
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
vbb.order(ByteOrder.nativeOrder());
vertexBuffer = vbb.asFloatBuffer();
vertexBuffer.put(vertices);
vertexBuffer.position(0);
ByteBuffer ibb = ByteBuffer.allocateDirect(indices.length * 2);
ibb.order(ByteOrder.nativeOrder());
indexBuffer = ibb.asShortBuffer();
indexBuffer.put(indices);
indexBuffer.position(0);
// float has 4 bytes, colors (RGBA) * 4 bytes
ByteBuffer cbb = ByteBuffer.allocateDirect(colors.length * 4);
cbb.order(ByteOrder.nativeOrder());
colorBuffer = cbb.asFloatBuffer();
colorBuffer.put(colors);
colorBuffer.position(0);
}
public void draw(GL10 gl){
gl.glFrontFace(GL10.GL_CCW);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glCullFace(GL10.GL_BACK);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
// Enable the color array buffer to be used during rendering.
gl.glEnableClientState(GL10.GL_COLOR_ARRAY); // NEW LINE ADDED.
// Point out the where the color buffer is.
gl.glColorPointer(4, GL10.GL_FLOAT, 0, colorBuffer); // NEW LINE ADDED.
gl.glDrawElements(GL10.GL_TRIANGLES, indices.length, GL10.GL_UNSIGNED_SHORT, indexBuffer);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisable(GL10.GL_CULL_FACE);
}
}
あなたはそれは私がカメラのプレビューの上に長方形の枠を描きたい問題だ見るだけでなく、アイデアはちょうどカメラアプリケーションでのフォーカス矩形のような単純ですが、私は彼らの領収書を配置するユーザーのためのための安全な地域を描きたいです内側とそのエリアをクロップ – user2641657
問題は何ですか?あなたは(これだけではなくGL_TRIANGLESよりGL_LINESのドローでそれを置き換える、現在のドローのためのあなたの長方形の角の座標を知って、あなたはそれは違うだろうとして、線として正しいポイントをリンクするためにインデックスバッファを修正する必要があります三角形の接続性へ)。 – solidpixel