0

如果我有一个256 x 256的纹理,以及一个在X: 192 Y: 128处为32 x 32 的图像,那么使用glTexCoord2f的算法将只在X: 192 Y: 128处绘制32 x 32图像(剪切图像的其他部分)?

这是我想做的一个例子。蓝色/红色框将是我想要使用的。但我只想画那个盒子,周围什么都没有,或者整个纹理。

http://i.imgur.com/lTuGFou.png

4

1 回答 1

1

这是你想要的吗?

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 中也弃用了中间模式。

于 2013-07-11T09:53:28.730 回答