다각형 그리기
Android에서 OpenGL ES 2.0으로 다각형을 정의하고 그려본다.
Last updated
Android에서 OpenGL ES 2.0으로 다각형을 정의하고 그려본다.
Last updated
static float squareCoords[] = {
x1, y1, z1,
x2, y2, z2,
x3, y3, z3, // 여기서 삼각형 하나 완성
x1, y1, z1,
x3, y3, z3,
x4, y4, z4 // 두번째 삼각형 완성
};public class Square {
private FloatBuffer vertexBuffer;
private ShortBuffer drawListBuffer; // drawListBuffer에 점의 순서를 저장한다.
static float squareCoords[]; // 생략
private short drawOrder[] = { 0, 1, 2, 0, 2, 3 }; // order to draw vertices
public Square() {
// ...
// initialize byte buffer for the draw list
ByteBuffer dlb = ByteBuffer.allocateDirect(
drawOrder.length * 2); // short은 2바이트라서 2를 곱한다.
dlb.order(ByteOrder.nativeOrder());
drawListBuffer = dlb.asShortBuffer();
drawListBuffer.put(drawOrder);
drawListBuffer.position(0);
}
// Renderer에서 호출하면 그린다.
public void draw(float[] mvpMatrix) {
GLES20.glUseProgram(mProgram);
// ...
// glDrawArrays 대신 아래와 같이 바꾼다.
GLES20.glDrawElements(
GLES20.GL_TRIANGLES, drawOrder.length,
GLES20.GL_UNSIGNED_SHORT, drawListBuffer);
// ...
}
}@Override
public void onDrawFrame(GL10 unused) {
// ...
// 카메라 에 맞춰 적절히 projection된 매트릭스가 넘어간다.
mShape.draw(mMVPMatrix);
}