gpt4 book ai didi

c++ - 纹理周围的边框,OpenGL

转载 作者:可可西里 更新时间:2023-11-01 18:37:07 32 4
gpt4 key购买 nike

这是我在程序中用来绘制矩形的代码:

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();

它只绘制一个具有指定纹理的简单矩形,例如像这样:enter image description here

请问在OpenGL中是否可以实现这样的边框效果:

正如您在这个图 block 中看到的那样,只有一个可以单独处理的纯蓝色背景 - 只是自动调整纹理大小。这可以通过我提供的代码片段轻松实现,但问题在于边框。

如果边框应该是一种颜色,我可以尝试通过在我的纹理周围使用 GL_LINES 来绘制空的、未填充的矩形,但事实并非如此。

此外,如果图 block 始终具有固定大小,我可以准备一个与其匹配的纹理,但它们必须可以轻松调整大小,而无需更改我用作纹理的位图文件。

那么,如果使用基本的 OpenGL 函数是不可能的,那么实现这种效果的最有效和/或最简单的方法是什么?

编辑:它必须是二维的。

最佳答案

这是使用 OpenGL 的 GUI 的经典问题,通常使用 9 单元格模式来解决。在此,您将效果添加到原始图像(或通过其他 opengl 参数定义它)并将渲染的四边形分成九个四边形:三行和三列。

然后固定上下行的高度,就像固定左列和右列的宽度一样。中心四边形已缩放,以便您的对象适合您想要适合的矩形。然后,您仅将纹理的边界部分映射到形成外部单元格的四边形,同时将纹理的中心映射到中心四边形。


与评论中所说的相关,您还可以通过制作四边形 3D 来使用实际的 3D 效果。在这种情况下,没有人强制您使用透视投影,您可以继续使用正交投影(2D 模式)。无论如何,OpenGL 总是会进行 3D 计算。

关于c++ - 纹理周围的边框,OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13840984/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com