2017-05-02 16 views
0

im은 이전에 렌더링 된 모든 프레임을 볼 수 있기를 원하기 때문에 깊이 또는 색상 비트에 대해 glClear를 호출하지 않으려합니다. 그리고 그것은 x와 y 축 전체에 모델을 반복하는 것을 제외하면 효과가 있으며, 또한 이상한 회색의 뭉툭한 선들이 생깁니다. 이것을 달성 할 수있는 방법이 있습니까? 임 안드로이드에서 OpenGL을 사용하여 3. 어떤 도움을 주셔서 감사합니다.glclear를 호출하면 이상한 유물이 생깁니다.

uh

+0

이전 프레임을 제거하고 싶지 않지만 이전 프레임을 보는 것에 불평하고 있습니까? 당신은 아마 하나 또는 다른 것을 원하는지를 결정해야합니다. – JustSid

+0

나는 그것이 미치지 않을 것으로 기대하기 때문에 그것이 작동하기를 원합니다. 내가 한 선의 끝점에서 회전하여 원을 그렸습니다. 전체 원을 그리는 프레임을 유지하고 싶습니다. –

+0

처음으로 지우는 것을 잊으셨습니까? 그리기를 시작하기 전에 한 번 취소해야합니다. 하지만 그렇게하기 전에 장면이로드되고, 뷰포트 집합과 버퍼가 바인딩되었는지 확인하십시오. –

답변

1

프레임의 시작에서 기본 프레임 버퍼의 내용은 특히 모바일 GPU의 대부분은 타일 기반 렌더러에 정의되어 있지 않습니다. X 축과 Y 축의 "반복"은 타일이 특정 GPU에 얼마나 큰지를 보여주는 것일 수 있습니다 (예 : GPU 로컬 타일 RAM에있는 모든 것을 버리고 화면을 완전히 덮으려면 N 번 반복).

이전 프레임 위에 렌더링하려면 EGL_BUFFER_PRESERVED (기본값은 EGL_BUFFER_DESTROYED)을 사용하도록 렌더링 컨텍스트 구성을 구성해야합니다. 예컨대 :

eglSurfaceAttrib(m_display, m_surface, EGL_SWAP_BEHAVIOR, EGL_BUFFER_PRESERVED); 

주 1 :이 표면 폐기로 시작하는 반면, (표면이 효과적으로 타일 로컬 메모리로 다시 복사) 약간의 오버 헤드가 발생하거나 무효화 또는 명확한 일반적으로 무료로합니다.

참고 2 :이 옵션은 색상 데이터 만 보존합니다. 기본 프레임 버퍼의 프레임간에 깊이 또는 스텐실을 보존 할 수단이 없습니다.

+0

이 설정은 실행 중에 켜고 끌 수 있습니까? –

+1

그렇습니다. 컨텍스트 생성시 (보통 보존 또는 파괴 된 상태를 악용하기 위해 사용하는 렌더링 알고리즘을 변경하므로 항상 켜기 또는 끄기로 전환 할 수있는 설정이 아닙니다) 그래도 작업을 수행하는 것이 일반적입니다. – solidpixel

+0

내가 eglcontext를 얻는 방법을 알고 있습니까? 그 첫 번째 라인 thats 충돌 그것 –