如果我有一个256 x 256的纹理,以及一个在X: 192 Y: 128处为32 x 32 的图像,那么使用glTexCoord2f的算法将只在X: 192 Y: 128处绘制32 x 32图像(剪切图像的其他部分)?
这是我想做的一个例子。蓝色/红色框将是我想要使用的。但我只想画那个盒子,周围什么都没有,或者整个纹理。
如果我有一个256 x 256的纹理,以及一个在X: 192 Y: 128处为32 x 32 的图像,那么使用glTexCoord2f的算法将只在X: 192 Y: 128处绘制32 x 32图像(剪切图像的其他部分)?
这是我想做的一个例子。蓝色/红色框将是我想要使用的。但我只想画那个盒子,周围什么都没有,或者整个纹理。
这是你想要的吗?
float f = 1.0f/256.0f;
glBegin( GL_QUADS );
glTexCoord2f( 192 * f, 128 * f );
glVertex2f( 192, 128 );
glTexCoord2f( (192 + 32) * f, 128 * f );
glVertex2f( 192 + 32, 128 );
glTexCoord2f( (192 + 32) * f, (128 + 32) * f );
glVertex2f( 192 + 32, 128 + 32 );
glTexCoord2f( 192 * f, (128 + 32) * f );
glVertex2f( 192, 128 + 32 );
glEnd();
请记住,纹理坐标被缩放到 <0,1> 间隔。在 OpenGL 3 中也弃用了中间模式。