在C中的opengl中绘制纹理

用户名

我尝试使用SOIL加载纹理,并使用我创建的函数对其进行绘制,该函数获取纹理及其许多详细信息,然后进行绘制。

问题是-当我绘制时-图片的位置会随着宽度和高度的变化而变化。我不希望这样-我希望它选择左下角的点并从该点开始绘制,就像在这幅画中一样:http : //postimg.org/image/kalv23v3p/(请原谅我糟糕的计算机绘画技能),所以我可以-例如-制作一个HP杆,使其可以在相同的X和Y位置保持不变并在相同的位置上保持不变。问题(根据我对功能的理解)在glTranslatef:P中

 void DrawImage(char filename,
                       int xx,
                       int yy,
                       int ww,
                       int hh,
                       int angle,
                       int xp,
                       int yp) 
{
  glEnable(GL_TEXTURE_2D);
  glBindTexture(GL_TEXTURE_2D, filename);

  glLoadIdentity();
  glTranslatef(xx + (ww / 2),yy + (hh / 2),0.0);
  glRotatef(angle,0.0,0.0,1.0);
  glTranslatef(-(xx + (ww / 2) + xp),-(yy + (hh / 2) + yp),0.0);

  // Draw a textured quad
  glBegin(GL_QUADS);
  glTexCoord2f(0, 0); glVertex2f(xx,yy);
  glTexCoord2f(0, 1); glVertex2f(xx,yy + hh);
  glTexCoord2f(1, 1); glVertex2f(xx + ww,yy + hh);
  glTexCoord2f(1, 0); glVertex2f(xx + ww,yy);

  glDisable(GL_TEXTURE_2D);
  glPopMatrix();

  glMatrixMode(GL_PROJECTION);
  glPopMatrix();

  glMatrixMode(GL_MODELVIEW);
  glEnd();
}

filename实际是纹理本身时(通常为GLuint)。基本上该函数是从这里开始的,但是我对其进行了更改,以便它将获取所有这些参数。任何想法如何解决我的问题并使代码按我希望的方式工作?

洪都林

我猜ww和hh是您的with和height参数...

如果使用ww和hh作为参数,则使用glTranslatef可以移动所有内容。尝试改变

glTranslatef(xx + (ww / 2),yy + (hh / 2),0.0);

glTranslatef(xx, yy, 0.0);

glTranslatef(-(xx + (ww / 2) + xp),-(yy + (hh / 2) + yp),0.0);

glTranslatef(-(xx + xp),-(yy + yp),0.0);

现在,如果要调整大小,请不要使用glTranslatef。使用glScalef调整大小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在OpenGL中绘制2D纹理

来自分类Dev

使用lwjgl在现代OpenGL中绘制纹理

来自分类Dev

在openGl android(Wear)中绘制基于图像的纹理

来自分类Dev

在OpenGL中绘制多个2D纹理

来自分类Dev

通过 VBO 绘制时在 Tao.OpenGL 中的纹理

来自分类Dev

在C中读取OpenGL的jpg纹理

来自分类Dev

在OpenGL中创建纯色纹理

来自分类Dev

纹理不在OpenGL中显示

来自分类Dev

在OpenGL中渲染到纹理

来自分类Dev

OpenGL纹理中的LOD偏差

来自分类Dev

Java OpenGL 绘制纹理

来自分类Dev

在OpenGL中绘制N型星-C ++

来自分类Dev

OpenGL ES 2.0中的多维数据集不绘制给定的纹理

来自分类Dev

如何在OpenGL着色器中从纹理图块贴图绘制图块?

来自分类Dev

在OpenGL中绘制像素

来自分类Dev

如何在LWJGL中绘制透明纹理?

来自分类Dev

如何在 LibGDX 中绘制纹理?

来自分类Dev

Pyglet 将文本绘制到纹理中

来自分类Dev

OpenGL ES绘制黑色纹理

来自分类Dev

如何在OpenGL中构造glutSolidTorus的纹理?

来自分类Dev

OpenGL中具有不同纹理的粒子

来自分类Dev

纹理在OpenGL中的渲染非常奇怪

来自分类Dev

在OpenGL着色器中渲染纹理

来自分类Dev

在OpenGL中渲染纹理1到1

来自分类Dev

OpenGL中的压缩纹理批处理

来自分类Dev

如何在OpenGL中反转纹理颜色

来自分类Dev

在OpenGL中显示代码生成的纹理

来自分类Dev

如何在OpenGL中处理纹理动画?

来自分类Dev

OpenGL:GLSL中的访问数组纹理