【发布时间】:2011-10-16 14:11:01
【问题描述】:
假设我有一个获取 GLuint 纹理作为参数的方法,我想渲染它的一部分。例如,考虑一个图块集,我希望能够在加载关卡时加载一个图块集并渲染它的部分(图块)。
如果我能够以某种方式从要绘制的图块集中以像素坐标定义高度、宽度、posX 和 posY,那将是最佳选择。
我已经尝试了几个小时,我们将不胜感激。
我目前如何绘制纹理的简化版本:
void Render::draw(GLuint texture, float posX, float posY, float sizeX, float sizeY) {
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glAlphaFunc(GL_GREATER,0.1f);
glBindTexture( GL_TEXTURE_2D, texture );
glPushMatrix();
glTranslatef(posX,posY,0);
glBegin( GL_QUADS );
//Bottom-left vertex (corner)
glTexCoord2i( 0, 0);
glVertex2f( -sizeX,-sizeY);
//Bottom-right vertex (corner)
glTexCoord2i( 1, 0);
glVertex2f(sizeX,-sizeY);
//Top-right vertex (corner)
glTexCoord2i( 1, 1);
glVertex2f(sizeX,sizeY);
//Top-left vertex (corner)
glTexCoord2i( 0, 1);
glVertex2f( -sizeX,sizeY);
glEnd();
glPopMatrix();
glDisable(GL_BLEND);
}
【问题讨论】:
标签: c++ image opengl rendering