[c] 표면과 질감의 차이 (SDL / 일반)

누구든지 질감과 표면의 차이점을 간단한 말로 설명해 줄 수 있습니까? 나는 그것이 SDL2as SDL_Surface및 에서 사용되는 것을 보았다 SDL_Texture. SDL_Texture생성은부터 SDL_Surface차례로에서 화상 / 비트 맵으로부터 생성된다. 둘 다 픽셀 모음입니다. 그러나 나는 그들 사이의 주요 차이점을 보지 못합니다 (GPU로 무언가를해야합니까?)

나는 그것을 구글로 시도했지만 내가 찾은 모든 설명은 컴퓨터 그래픽에 대해 더 깊이 파고 들지 않고는 이해하기에는 너무 복잡했습니다.



답변

기본적으로 “GPU로 뭔가를해야합니까?” 맞다.

SDL_Surface소프트웨어 렌더링에 사용됩니다 . 소프트웨어 렌더링을 사용하면 saloomi2012가 올바르게 인식 했듯이 일반 RAM을 사용하여 이미지 데이터를 저장하고 있습니다. 따라서 대부분의 경우 표면과 관련된 데이터 버퍼에 직접 액세스하여 콘텐츠를 수정할 수 있습니다. 즉, CPU를 사용하므로 소프트웨어 이름이됩니다.

SDL_Texture반면에 하드웨어 렌더링에 사용되며 텍스처는 VRAM에 저장되며 .NET과 같이 직접 액세스 할 수 없습니다 SDL_Surface. 렌더링 작업은 내부적으로 OpenGL 또는 DirectX (Windows에서만 사용 가능) API를 사용하여 GPU에 의해 가속화되며, 이는 차례로 비디오 하드웨어를 사용하므로 하드웨어 렌더링 이름입니다.

하드웨어 렌더링은 소프트웨어 렌더링보다 훨씬 빠르며 항상 기본 옵션으로 간주되어야합니다.


답변

SDL_Texture 일반 RAM 대신 비디오 카드의 VRAM에로드됩니다.


답변

이에 대한 자세한 정보는 다음과 같습니다.

https://thenumbat.github.io/cpp-course/sdl2/05/05.html

지난 강의에서 언급했듯이 텍스처는 표면과 동등한 GPU 렌더링입니다. 따라서 텍스처는 SDL_CreateTextureFromSurface () 함수를 사용하여 거의 항상 표면에서 생성됩니다. 이 함수는 사용자가 예상 한대로 수행합니다. 매개 변수는 렌더링 컨텍스트와 텍스처를 생성 할 표면입니다. 다른 생성 함수와 마찬가지로 실패시 NULL을 반환합니다.

도움이 되었기를 바랍니다.


답변

표면은 RAM을 사용하고 텍스처는 표면보다 빠른 비디오 카드를 사용합니다.


답변