2016-07-07 11 views
0

SDLGame Maker에는 표면 개념이 있습니다.이 이미지는 사용자가 즉시 수정하고 표시 할 수 있습니다. 나는 OpenGL 1을 사용하고 있는데, OpenGL에 Surface의 개념이 있는지 알고 싶습니다. 내가 생각 해낸OpenGL의 블 리 팅 표면

유일한 방법이었다 :

  • 모든 프레임은 필요에 따라 새로운 텍스처를 생성/파괴한다.
  • 모든 프레임, 필요에 따라 텍스처를 업데이트하십시오.

이러한 접근 방식은 성능이 뛰어나지는 않지만 대안이 없습니다. 어쩌면 이것이 언급 된 엔진에서 구현 된 것일 수 있습니다.

+0

제 대답이 도움이되었는지 확인해주세요. – Harish

+0

글쎄, 나는 더 많은 답변을 얻지 못한다고 생각한다. 그리고 다른 대안이 없다면, 나는 그것을 알고 행복합니다. – Agggg

답변

0

예이 두 가지는 OpenGL 1.0에서 수행 할 수있는 방법입니다. 나는 1.0 스펙과 관련하여 다른 어떤 수단도 없다고 생각한다. 링크 : https://www.opengl.org/registry/doc/glspec10.pdf

텍스처가 음영 처리에 빠르게 액세스 할 수있는 장치 메모리 (GPU)에 저장된다는 점에 유의하십시오. 그리고 위의 방법은 호스트 (CPU) 메모리와 장치 메모리간에 복사합니다. 따라서 성능 저하는 호스트 장치 복사 속도입니다.

왜 OpenGL 1.0 사양으로 제한됩니까? 당신은 더 높은쪽으로 갈 수 있고, 그 다음 당신은 더 많은 옵션을 얻는 것을 시작한다.

  1. GLSL 셰이더를 사용하면 한 텍스처의 내용을 직접 편집하고 다른 텍스처로 출력 할 수 있습니다. 처리는 GPU에서 수행되며 장치 장치 복사본은 최대한 빨리 처리됩니다.
  2. CUDA를 사용하십시오. 텍스처를 CUDA 배열에 매핑하고 커널을 사용하여 내용을 수정하십시오. 또는 NVIDIA가 아닌 카드에 OpenCL을 사용하십시오.

수정이 병렬로 실행될 수 있다면 이것은 이점이 있습니다.

CPU 복제 방법을 시도해 보는 것이 좋습니다. 사용자의 요구에 충분히 빠를 수 있기 때문입니다. 최신 장치로 호스트 장치 복사 속도가 빨라지고 있습니다. 이 복사본을 사용하더라도 실시간으로 60fps 이상의 이미지를 얻을 수 있습니다.