PDA

View Full Version : Register Combiner and 3D Texture border



ysatou
03-18-2002, 04:59 AM
Hi everyone.
I have a problem on 3D texture with border;

I render 3D texure using Register combiner successfully.
But When I specfy texture border , there is no image ( white screen )

Does it support Border 3D Texture on Register Combinr?

Please tell me..




for( z=0;z<depth+2;z++ ){
for( y=0;y<height+2;y++ ){
for( x=0;x<width+2;x++ ){
/* create data width border */
}
}
}

glColorTableEXT( GL_SHARED_TEXTURE_PALETTE_EXT, .... );

glTexImage3DEXT( GL_TEXTURE_3D_EXT , 0 , GL_COLOR_INDEX8_EXT , width+2 , height+2 , depth+2 , 1 , GL_COLOR_INDEX , GL_UNSIGNED_BYTE , texture_data );

davepermen
03-19-2002, 08:38 AM
i don't really see your border problem. it looks like you're creating a texture with extrapixels at the sides to fill them with borders (thats why u use +2 in every dimension, i guess..)

is this right?

if so, are you sure that width+2 is power of 2? and height+2 and depth+2..

zeckensack
03-19-2002, 09:06 AM
Try this:


glTexImage3DEXT( GL_TEXTURE_3D_EXT , 0 , GL_COLOR_INDEX8_EXT , width , height , depth , 1 , GL_COLOR_INDEX , GL_UNSIGNED_BYTE , texture_data );According to the spec, the extra pixels are added automatically. The w,h,d you specify must be powers of two, even if you have extra border texels.

I'm also a bit perplexed by the COLOR_INDEX stuff, but give it a shot.

ysatou
03-21-2002, 10:29 PM
Thanks for Reply.

Here , width and height is power of 2 ( 64,128,256... ).

In OpenGL Programming Guide,Chapter 9, There is following description about glTexImage2D.



Both width and height must have the form 2^m+2b, where m is a non-negative integer , and b is the value of border. The maximum size of a texture map depends on the implementation of OpenGL, but it must be at least 64x64( or 66x66 widh borders).

So , I understand if I want to create a texture widh border , I specify 2^m + 2 value for width.

I try to following sentences , but there is no image..



glTexImage3DEXT( GL_TEXTURE_3D_EXT , 0 , GL_COLOR_INDEX8_EXT , width , height , depth , 1 , GL_COLOR_INDEX , GL_UNSIGNED_BYTE , texture_data );

If I specify width+2,height+2,depth+2 for length, my application is stopped.

zeckensack
03-22-2002, 04:50 AM
Yes, you're right, I was wrong, sorry. Had to reread the spec again and found the correct paragraph this time.
Have you tried without borders? It might be possible that texture borders (even though mandated by the spec) are not supported by your hardware.