mr5*_*mr5 6 opengl glut soil visual-c++
我正在制作这个C++程序,它有按钮,按钮容器,聊天框等,我想用纹理包裹它.
我想为我制作的所有矩形生成一个平滑的边缘,我不希望顶点绘图方法为它做的工作,因为它消耗更多的CPU使用而且看起来不是很好,我不知道是否它可以使用纹理坐标(即glTertCoord(u,v)与glVertex2f(x,y) w/c应该只有4,因为它是一个四边形)
我用来加载纹理使用SDL_LoadBMP() w/c只能加载.bmp格式.(我不确定因为它只说LoadBMP).
可以在.BMP格式处理的透明度?如果是的话,该怎么做?
你能告诉我一些代码样本使用SOIL来加载格式.gif的图像或任何其他可以处理图像透明度的格式吗?
四边形可以处理六边形或星形的不规则/多边形形状而不绘制其背景吗?
*如何导入通过c ++ opengl呈现的原始文本框,以便将文本复制到剪贴板中?至于我的节目中的聊天会话.
我创建了自己的库,使用GL_POINTS绘制文本,并且在调整窗口大小时看起来不太好,因为这些点是分散的.这需要const char*避免文本,#include <*string*>因为我希望我的程序不依赖于C++的核心功能.
所以更好的解决方案是使用位图绘制它.
有人建议使用图像绘制它,所以我真的需要透明度的东西,因为我希望它只使用四边形绘制.
是的,位图格式确实支持透明度。
它取决于压缩方法,默认RGB方法支持24位颜色,但是BITFIELDS压缩支持32位颜色(24位+ alpha通道)。
您可以在http://en.wikipedia.org/wiki/BMP_file_format中阅读更多内容
我在Lime项目中成功使用了它,这是用Haxe编写的实现:https : //github.com/openfl/lime/blob/4adb7d638d15612e2542ae3a0ef581a786d21183/src/lime/_internal/format/BMP.hx
这个答案仅解决 bmp 文件是否可以处理透明度,以及如何使用 SOIL 加载 png 文件,我认为如果您进一步推断,它也会向您展示如何加载 gif 文件。根据这篇维基百科文章,bmp 是一种通过Alpha 通道支持透明度的文件类型。但根据这篇SO 文章,事实并非如此。根据我自己的经验,我还没有找到使 bmp 透明的方法。所以理论上32位bmp文件应该支持透明度,但我对此表示怀疑。(也许我会食言?)
好的,来自SOIL 网站,这段代码告诉我们如何加载处理透明度的 png 文件:
/* load an image file directly as a new OpenGL texture */
GLuint tex_2d = SOIL_load_OGL_texture
(
"img.png"
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB |
SOIL_FLAG_COMPRESS_TO_DXT
);
Run Code Online (Sandbox Code Playgroud)