【发布时间】:2014-06-18 14:49:09
【问题描述】:
我有一个名为 DrawImage 的绘图函数,但它确实令人困惑,并且只使用特定形式的重塑函数,所以我有 2 个问题:
- 如何在 OpenGL 中绘制纹理?我只想创建一个函数来获取纹理、x、y、宽度、高度,也许还有角度,然后根据参数对其进行绘制和绘制。我想定期将其绘制为 GL_QUAD 但我不知道该怎么做.-。人们说我应该使用 SDL 或 SFML 这样做,是否推荐?如果是,你能给我一个加载纹理和绘制纹理的简单函数吗?我目前正在使用 SOIL 加载纹理。
函数如下:
void DrawImage(char filename, int xx, int yy, int ww, int hh, int angle)
{
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, filename);
glLoadIdentity();
glTranslatef(xx,yy,0.0);
glRotatef(angle,0.0,0.0,1.0);
glTranslatef(-xx,-yy,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();
}
有人跟我说你不能在glBegin和glEnd之间打电话给glDisable、glPopMatrix或glMatrixMode。问题是 - 没有它,代码将无法工作。知道如何让它在没有它的情况下工作吗?
2.关于 glutReshapeFunc,文档说它获得了一个指向具有 2 个参数、宽度和高度的函数的指针 - 我创建了(到目前为止)一个变得无效的函数 - 知道如何编写一个获取宽度和高度,实际上做了 reshape 需要做的事情。
还有一个小问题:对于像 OpenGL 这样的 GUI,C++ 比 C 好多少?正如我所看到的,只有 OOP 才是问题所在,我没有解决任何 OOP 可以解决而 C 不能解决的问题(我的意思是在 OpenGL 中)。
无需回答所有问题 - 问题 1 对我来说基本上是最重要的:P
【问题讨论】:
-
问题太多了,其中一些是题外话/观点。请当时只问一个问题。并始终添加您编写的相关代码,并解释它的错误或问题。
-
@user694733 抱歉,完成:P
-
@user3745476 那么为什么它被称为文件名? ://
-
@BartekBanachewicz 你是对的,我在 mycdoe 中更改了它