Je génère une carte de hauteur pour chaque quad de mon quadtree en openCL. La façon dont je créais l'image est la suivante:
DataBufferInt dataBuffer =
(DataBufferInt)img.getRaster().getDataBuffer();
int data[] = dataBuffer.getData();
//img is a bufferedimage
inputImageMem = CL.clCreateImage2D(
context, CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR,
new cl_image_format[]{imageFormat}, size, size,
size * Sizeof.cl_uint, Pointer.to(data), null);
Cela fonctionne bien, mais le problème majeur est que, comme les quadriceps deviennent de plus en plus petits, le format 8 bits de l'image tamponnée commence à provoquer des problèmes de "pas à pas" intolérables comme indiqué ci-dessous:
Je me demandais s'il y avait une autre façon de procéder?
Merci pour le temps.
Réponses:
Utilisez-vous le filtrage de texture lors de la lecture de la carte de hauteur? Je m'attendrais à ce qu'un filtre bilinéaire lisse un peu les choses.
Si vous avez encore besoin d'une meilleure précision, changez le format d'image en quelque chose comme CL_UNORM_INT16 ou CL_FLOAT - voir http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/cl_image_format.html
Je ne sais pas trop comment vous faites cela depuis Java.
la source
cl_image_format
a unimage_channel_data_type
membre qui peut être utilisé pour spécifier le format de données (par exemple,CL_FLOAT
etc.)