0
내 계산을 GPU로 옮기려고 할 때 HLSL에서 대용량 배열을 정의 할 수있는 방법이 있습니까?HLSL에서 큰 차원의 배열을 정의하려면 어떻게해야합니까?
나는 현재
struct Buffer
{
float3 image[640 * 480];
};
을 가지고 있지만 나는이를 분할 한 후 CPU에 다시 함께 병합하지 않은 경우 그것은 좋은 것입니다 오류를
error X3059: array dimension must be between 1 and 65536
무엇입니까 .
이 방법이 있습니까? 코멘트에서 언급 한 바와 같이
업데이트
, 내가 저장를 픽셀 데이터로 만들려고 해요 배열과 같은 텍스처로이 데이터를 저장하는 것이 더 의미가있다. HLSL 파일에 내 Texture2D
을 정의하려했지만 데이터를 편집하거나 텍스처 파일에 쓸 수 없습니다.
누구든지이 작업을 수행하는 방법을 알고 있습니까?
저는 DirectX/HLSL에 대해 많이 알지 못합니다. 그러나 OpenGL에서 Uniform Buffers (이 유사점이있는 것 같습니다)는 저장 용량에 비슷한 제한이 있으며 일반적으로 대신 대체 저장 공간으로 텍스처를 사용하는 것이 좋습니다 (이것은 처음부터 이미지를 나타내는 객체로 보이기 때문에 적합합니다), 훨씬 더 큰 크기를 가질 수있는 * Shader Storage Buffer *를 사용하십시오. 나는 Shader Storage Buffer의 DX 버전이 무엇인지 알지 못합니다. – Xirema
@Xirema 더 예스 합니다. Texture2D를 사용하려했지만 셰이더에서 픽셀 데이터를 수정할 수 없습니다. 아마 나는 뭔가를 놓치고있다. – user
글쎄, OpenGL에서 버퍼에 대한 읽기 및 쓰기 권한을 모두 원할 경우 * Shader Storage Buffers *를 사용해야하며 Uniform Buffers는 읽기 전용 인 경향이 있고 텍스처는 객체로 객체가 제공 될 때만 읽을 수 있어야합니다. 셰이더를 사용하고 Texture 첨부 파일을 사용하여 사용자 정의 Framebuffer를 바인딩하는 경우 Fragment (Pixel, HLSL에서) 셰이더의 일반 출력의 일부로 만 쓸 수 있습니다. 어느 솔루션이든지 HLSL에 상응하는 솔루션이 있어야합니다. – Xirema