【发布时间】:2012-12-12 13:34:17
【问题描述】:
这是我在程序中用来绘制矩形的代码:
glBegin(GL_QUADS);
glTexCoord2f(0.0f, maxTexCoordHeight); glVertex2i(pos.x, pos.y + height);
glTexCoord2f(0.0f, 0.0f); glVertex2i(pos.x, pos.y);
glTexCoord2f(maxTexCoordWidth, 0.0f); glVertex2i(pos.x + width, pos.y);
glTexCoord2f(maxTexCoordWidth, maxTexCoordHeight); glVertex2i(pos.x + width, pos.y + height);
glEnd();
它只绘制一个具有指定纹理的简单矩形,例如像这样:
我想问一下是否可以在OpenGL中实现这样的边框效果:
正如您在此图块中看到的那样,只有一个纯蓝色背景,可以单独处理 - 只是自动调整大小的纹理。这可以通过我给出的代码 sn-p 轻松实现,但问题在于边框。
如果边框应该是一种颜色,我可以尝试在纹理周围使用GL_LINES 绘制空的、未填充的矩形,但事实并非如此。
此外,如果图块始终具有固定大小,我可以准备一个与之匹配的纹理,但它们必须易于调整大小,而无需更改我用作纹理的位图文件。
因此,如果使用基本的 OpenGL 函数无法实现,那么实现这种效果的最有效和/或最容易的方法是什么?
编辑:它必须是 2D 的。
【问题讨论】:
-
除非您需要它是 2d 的,否则为什么不通过在 3D 中制作梯形 Y 形状来实际创建斜切效果并使用照明来获得您需要的阴影效果?
-
@Quetzalcoatl 谢谢你的回答,但是是的,它必须是 2D 的。我将编辑我的问题以添加此信息。
-
您可以编写片段着色器来添加边框。但是,如果您仍在使用即时模式(
glVertex等过时函数),您可能需要一段时间才能赶上 OpenGL 2.0 及更高版本的精彩世界。 -
@Mosquito:您仍然可以使用 OpenGL 光照并只修改边缘法线向量。实际的空间几何形状与光照计算无关,它只发生在用户提供的法向量上,可以是任何东西。
标签: c++ opengl graphics textures