Обърках се как работят текстурите с CUDA
когато правя заявка за устройство "на моя GTX 780", намирам това:
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
сега, когато проучих CUDA "пример за частици", открих това:
checkCudaErrors(cudaBindTexture(0, oldPosTex, sortedPos, numParticles*sizeof(float4)));
където numParticles в моя случай го повиших до 1024 * 1024 * 2 (около 2,1 милиона)
как се вписва това в 1D текстурата??
също вътре в ядрата намерих това „имам нужда от повече обяснения, моля, тъй като всичко тук е свързано“
texture<float4, 1, cudaReadModeElementType> oldPosTex;
#define FETCH(t, i) tex1Dfetch(t##Tex, i)
в ядрото:
float4 pos = FETCH(oldPos, sortedIndex);
сега това, което също трябва да знам, мога да използвам тази текстура "с нейния дефиниран размер numParticles*sizeof(float4) в изчертаване на буфер на рамка, вместо да рисувам VBO?