微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 纹理边框,OpenGL

这是我用来在程序中绘制矩形的代码
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,maxTexCoordHeight);  glVertex2i(pos.x + width,pos.y + height);
glEnd();

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

我想问一下OpenGL是否可以实现这样的边界效果

正如你在这个瓷砖里看到的那样,只有一个纯蓝色的背景可以单独处理 – 只需自动调整纹理大小.这可以通过我给出的代码片段轻松实现,但问题在于边框.

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

此外,如果瓷砖总是具有固定的尺寸,我可以准备一个与之匹配的纹理,但是它们必须易于调整,而不必更改我用作纹理的位图文件.

因此,如果基本的OpenGL功能无法实现,那么实现这种效果最有效和/或最简单的方法是什么?

编辑:它必须是2D.

解决方法

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

然后,在固定左侧和右侧列的宽度时,固定上部和底部行的高度.缩放中心四边形,使您的对象适合您想要适合的矩形.然后,只将纹理的边框部分映射到形成外部单元格的四边形,同时将纹理的中心映射到中心四边形.

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

原文地址:https://www.jb51.cc/c/118495.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐