그려야하는 입방체 :
위의 큐브는 glPolygonMode (GL_FRONT_AND_BACK, GL_LINE) 함수를 사용하여 OpenGL에서 쉽게 생성 할 수 있지만 OpenGL ES에는 사용하려는 함수가 포함되어 있지 않습니다.
한마디로 다음과 같이 큐브를 그리지 않습니다.
나는 도움을 줄 수있는 사람들에게 감사하고 싶다.
============== 최소한 그림 업데이트 ========================================================================================= =====
뒤쪽 가장자리는 앞쪽 가장자리보다 약간 더 얇습니다. 이 문제를 해결할 수있는 해결책이 있습니까?
현재 코드 :
GLES20.glEnable(GLES20.GL_DEPTH_TEST);
GLES20.glDisable(GLES20.GL_POLYGON_OFFSET_FILL);
// Draw edge
GLES20.glDrawElements(GLES20.GL_LINES, lineIndices.length,
GLES20.GL_UNSIGNED_SHORT, lineIndexBuffer);
GLES20.glEnable(GLES20.GL_POLYGON_OFFSET_FILL);
GLES20.glPolygonOffset(1.0f, 1.0f);
// Apply background color and draw faces
GLES20.glUniform4fv(mColorHandle, 1, faceColor, 0);
GLES20.glDrawElements(GLES20.GL_TRIANGLES, triangleIndices.length,
GLES20.GL_UNSIGNED_SHORT, triangleIndexBuffer);
다음은 표준 트릭입니다 (깊이 버퍼를 사용한다고 가정).
> 메쉬 가장자리 (선) 그리기
> 메쉬 다각형을 배경색으로 채 웁니다 (숨겨진 선을 감추기 위해).
메쉬 가장자리와 메쉬면이 같은 z 값을 가지기 때문에 z- 파이팅 문제를 해결해야합니다. 가장 간단한 방법은 폴리곤 오프셋을 사용하여 가장자리가 폴리곤면의 “위”에서 약간 “위로 이동”합니다.
gl.disable(gl.POLYGON_OFFSET_FILL)
/* draw polygon edges */
gl.enable(gl.POLYGON_OFFSET_FILL);
gl.polygonOffset(1.0, 1.0);
/* fill polygons in background color */
다음은 z-fighting 문제를 보여주는 와이어 프레임 와인 잔입니다.
여기에서 폴리곤 오프셋을 사용하여 z-fighting 문제를 해결했습니다.