- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我需要将几张图片混合成一张图片,就像这里描述的那样:OpenGL - mask with multiple textures .
我使用了那里提出的解决方案,但 glBlendFuncSeparate
方法存在问题。
原来这个方法是在后来的openGL版本中引入的,根据我的gl.h
文件,我使用的版本是1.
经过大量搜索和阅读后,我意识到这就是我必须处理的问题,我不能只升级我的 openGL 版本。
我继续下载 GLEW
。
我将 glew.h
和 glew.c
添加到我的 VS10 项目中,定义了 GLEW_BUILD
现在它终于可以编译而不会提示 glBlendFuncSeparate
,但是当我运行该程序时,它在尝试调用该方法时崩溃,显示 Access Violation
,我猜它指向 NULL,然后在运行时崩溃。
我继续阅读和搜索此内容,据我所知,我需要使用 OpenGl Extensions 才能使其正常工作。
如果写在Using OpenGL extensions On Windows是正确的那么我错过了一些东西。
假设我按照它说的做,我“为您的显卡下载并安装最新的驱动程序和SDK”,然后编译它,即使它在我的机器上运行,我也不能保证它不会在别人的机器上崩溃,因为他们可能没有这样做。
我有两个问题:
glBlendFuncSeparate
的替代方法?最佳答案
你不需要 glBlendFuncSeparate(GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ZERO);使用 OpenGL - mask with multiple textures 中描述的技巧.是的,您不能将颜色直接添加到 alpha channel ,就像前面示例中所描述的那样,但是您可以稍微狡猾一些。
在编写你的蒙版时,只需禁用除 alpha 之外的所有颜色 channel :
glColorMask(false, false, false, true);
并在背景 alpha channel 上启用乘法 mask 的 alpha:
glBelndFunc(GL_ZERO, GL_SRC_ALPHA);
写完位掩码后,不要忘记重新设置 glColorMask。
glColorMask(true, true, true, true);
//-------------------------------------------- ---------------------------------------------- --------------------------
是的,您需要在 alpha channel 中包含信息的掩码:
1) 可以使用 GIMP 完成(非常简单,但需要 GIMP 知识)。
2) 您可以编写自己的 rootine,用于在创建蒙版纹理之前将颜色信息推送到 alpha channel (这非常简单 - 只需几行代码)。
3) 或者只使用 glTexImage2D 中的 GL_ALPHA“格式”属性作为 mask 纹理。此标志只是将位图颜色写入纹理 alpha channel 。
关于windows - OpenGL 和(缺少)glBlendFuncSeparate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19426921/
我需要一些有关 OpenGL 纹理 mask 的帮助。我让它工作但需要找到一些其他混合函数参数以其他方式工作。现在我有: //Background ...code... glBlendFunc
我有一个 OpenGL 应用程序,它根据以下设置混合颜色: glBlendEquationSeparate( GL_FUNC_ADD, GL_FUNC_ADD ); glBlendFuncSepara
我需要将几张图片混合成一张图片,就像这里描述的那样:OpenGL - mask with multiple textures . 我使用了那里提出的解决方案,但 glBlendFuncSeparate
我的问题与 here 几乎相同. 如果 glBlendFuncSeparate 对我可用,这也是答案: glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_S
我正在尝试在具有 arm6 处理器且仅支持 OpenGL ES 1.1 的旧 iOS 设备上构建代码。函数 glBlendFuncSeparate 崩溃。我在 stackoverflow 上找到了这篇
我是一名优秀的程序员,十分优秀!