Pio*_*cki 7 c++ opengl graphics textures
这是我用来在程序中绘制矩形的代码:
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();
Run Code Online (Sandbox Code Playgroud)
它只绘制一个具有指定纹理的简单矩形,例如: 
我想问一下OpenGL是否可以实现这样的边框效果:

正如你在这个瓷砖里面看到的那样,只有一个纯蓝色背景可以单独处理 - 只需自动调整纹理大小.这可以通过我给出的代码片段轻松实现,但问题在于边框.
如果边框应该是一种颜色,我可以尝试使用GL_LINES我的纹理周围绘制空的,未填充的矩形,但事实并非如此.
此外,如果瓷砖总是具有固定的尺寸,我可以准备一个与之匹配的纹理,但是它们必须易于调整,而不必更改我用作纹理的位图文件.
因此,如果基本的OpenGL功能无法实现,那么实现这种效果最有效和/或最简单的方法是什么?
编辑:它必须是2D.
这是使用OpenGL的GUI的经典问题,并且通常使用9单元模式来解决.在此,您将效果添加到原始图像(或通过其他opengl参数定义)并将渲染的四边形拆分为九个四边形:三行三列.
然后,您可以固定上部和底部行的高度,同时固定左侧和右侧列的宽度.缩放中心四边形,使您的对象适合您想要适合的矩形.然后,只将纹理的边框部分映射到形成外部单元格的四边形,同时将纹理的中心映射到中心四边形.
与评论中所述相关,您还可以通过制作四维3D来使用实际的3D效果.在这种情况下,没有人强迫你使用透视投影,你可以使用正交投影(2D模式).无论如何,OpenGL总是会进行3D计算.