iOS 용 3D 함수 플로터를 만들려고합니다. 삼각형 스트립을 사용하여 그래프를 렌더링하는 데 성공했으며 라인을 통해 와이어 프레임을 그리는 구현도 수행했습니다. 그러나 24 비트 (또는 16 비트는 중요하지 않음) 깊이 버퍼를 사용하여 동시에 두 가지를 렌더링하면 선이 부분적으로 다각형에 가려져 매우 얇게 보이거나 완전히 사라집니다. 4xMSAA를 해제해도 문제가 해결되지 않습니다. 아래 이미지를 참고하십시오. 단지 라인을 그리기OpenGLES 2.0 (GLKit, iPhone) : 폴리곤이 부분적으로 와이어 프레임 선을 흐리게합니다.
잘 작동합니다 - 라인 그냥 적당한 두께를 가지고있다. 선의 깊이 버퍼링을 사용 중지해도 올바르게 그려 지지만 물론 모든 다각형 (즉, 실제로는 다각형에 의해 숨겨진 선) 위에 표시됩니다. 나는 또한 다각형의 투명도를 줄이려고 노력했지만 아무 소용이 없었다. 선의 y 좌표를 약간 늘리면 위에서 보는 것처럼 보이게되어 실제로 폴리곤의 앞에 있습니다.
최적의 성능을 위해 렌더링 전에 모든 정점 데이터와 인덱스를 정점 배열에 정적으로 저장합니다. 따라서 렌더링 루프는 매우 짧습니다.
- (void)drawRect:(CGRect)rect
{
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
[self.effect prepareToDraw];
for (NSUInteger i = 0; i < _nVertexArrays; i ++)
{
glBindVertexArrayOES(_vertexArrays[i].vertexArray);
glDrawElements(_vertexArrays[i].mode, _vertexArrays[i].indexCount, GL_UNSIGNED_INT, NULL);
}
}
어떻게 동시에 다각형과 와이어 프레임을 표시 할 수 있습니까? 또한 카메라가 지금 당장 일어날 때마다 줄을 조금 더 가깝게 만들 생각이었습니다.하지만 OpenGL ES에서이를 수행하는 방법을 알지 못합니다. 성능에 영향을 미칠지 모르겠습니다. 카메라의 현재 위치에 따라 다릅니다. 그리기 직전에 선에 동적으로 변형을 적용 할 수 있습니까?
그 트릭을 했어! 고마워요! 이제는 최적의 매개 변수를 찾아야합니다. – MrMage