版主大人,我现在有15个球要贴纹理,应该使用什么方法?我已经实现了15个球可以贴同一个纹理。
但是texture好像不支持数组?我这样是不能通过编译的。
texture<uchar4, 2, cudaReadModeNormalizedFloat> tex[15];
错误是:
error : identifier “tex” is undefined in device code
所以我想问一下有没有类似于数组的方法可以处理15个纹理?
或者用texture object可以使用类似tex[15]这样的定义方法吗?
好像是不支持纹理数组,这点做的不如OpenGL好。
如果你都是二维纹理,可不可以用layer texture?
(1) rtrobin说的不错。如果每个纹理都是一样大小的,可以考虑使用Layed Textures.
(2) texture reference定义为全局变量的时候,无法作为数组,但可以定义15个,然后在kernel内部使用纹理引用的数据。即:
texture<…> t0,t1t2,…,t14;
…;
global void your_kernel()
{
texture<…> tex[15] = {t0,t1,t2…,t14};
…//然后下文可以使用tex[15]了。
}
(3)texture object支持数组,可以直接定义为[15]