문제

CPU에서 수행하는 일부 그래픽 처리를위한 XNA를 쉬운 기초로 사용합니다. 이미 필요한 많은 것들을 제공하기 때문입니다. 현재 내 "rendertarget"은 사용자 정의 색상 배열입니다. struct 나는 R, G, B의 세 가지 부동 소수점 필드로 구성되어 있다고 썼다.

화면에서 이것을 렌더링하고 싶을 때이 배열을 색상으로 수동으로 변환합니다. struct XNA는 단순히 0-255의 바이트 범위 내에서 결과를 클램핑하여 채널 당 8 비트의 정밀도를 제공합니다 (채널 당 8 비트). 그런 다음이 새로운 배열을 데이터로 설정했습니다. Texture2D (a SurfaceFormatSurfaceFormat.Color) 그리고 a SpriteBatch.

내가 찾고있는 것은 CPU 에서이 번역 프로세스를 제거하고 기본적인 사후 처리를하고 싶은 텍스처로 GPU로 직접 백 버퍼를 보내는 방법입니다. 그리고 나는 정말로 8 비트보다 조금 더 정밀도가 필요하지만 (반드시 32 비트는 아니지만, 내가하는 일이 GPU 집약적이지 않기 때문에 상처를 입을 수는 없습니다).

이 작업을 어떻게할까요?

색상을 제공하면 32 바이트 크기의 명시 적 크기 (따라서 8 바이트 패딩, 3 개의 채널이 24 비트 만 채우기 때문에) StructLayout 그리고 설정 SurfaceFormat THE와 함께 렌더링되는 질감의 SpriteBatch 에게 SurfaceFormat.Vector4 (32 바이트 큰) 텍스처를 SetData<Color> 아마도 작동 할 것입니다. 그러나 나는이 예외를 얻는다 :

이 방법에서 T에 사용하는 유형은이 리소스의 잘못된 크기입니다.

임의로 구성된 모든 것을 사용할 수 있습니까? struct 그리고 정점을 통해 할 수있는 것처럼 GPU의 텍스처 데이터로 해석하십시오. VertexDeclaration 어떻게 배치 된지를 지정하여?

도움이 되었습니까?

해결책

색상을 버려서 원하는 것이 있다고 생각합니다. struct 나는 만들고 사용합니다 Vector4 내 색상 정보. 이것은 작동한다면 작동합니다 SurfaceFormat 텍스처의도 설정됩니다 Vector4.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top