我正在尝试加载具有 RGBA 值的纹理,但 alpha 值似乎只是使纹理更白,而不是调整透明度。我听说过 3D 场景有这个问题,但我只是使用 OpenGL 来处理 2D。我能解决这个问题吗?
我正在初始化 OpenGL
glViewport(0, 0, winWidth, winHeight);
glDisable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_DEPTH_TEST);
glClearColor(0, 0, 0, 0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, winWidth, 0, winHeight); // set origin to bottom left corner
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(1, 1, 1);
Run Code Online (Sandbox Code Playgroud)
截屏:
那个褪色的点图像应该是半透明的。黑色部分应该是完全透明的。正如您所看到的,它后面有一个图像没有显示出来。
生成该纹理的代码相当冗长,因此我将描述我所做的事情。这是一个 40*30*4 的 unsigned char 类型的数组。每第 4 个字符设置为 128(应该是 50% 透明,对吧?)。
然后我将其传递到此函数中,将数据加载到纹理中:
void Texture::Load(unsigned char* data, GLenum format) {
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, _texID);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, _w, _h, format, GL_UNSIGNED_BYTE, data);
glDisable(GL_TEXTURE_2D);
}
Run Code Online (Sandbox Code Playgroud)
而且...我想我刚刚发现了问题。使用以下代码初始化全尺寸纹理:
glEnable(GL_TEXTURE_2D); …Run Code Online (Sandbox Code Playgroud) 如何从程序中找到正在运行的X窗口窗口管理器的名称?
如果我在一个窗口管理器已经运行时启动另一个窗口管理器,则会发生错误,因此必须有一种方法让另一个窗口管理器检测第一个窗口管理器.
它是如何工作的?
我想使我的查询中的排序有条件,所以如果它满足条件它应该通过降序排序
例如:
SELECT * FROM Data ORDER BY SortOrder CASE WHEN @Direction = 1 THEN DESC END
Run Code Online (Sandbox Code Playgroud) 你如何在Joomla的某篇文章中包含javascript或CSS文件?
我有一篇文章需要jQuery UI和相关主题.由于这不在任何其他页面上使用,我只想要它用于这篇特定的文章.在文章的HTML中添加必要的<script>和<link rel="stylesheet">标签不起作用,因为它们在保存时被剥离.
如果有一种方法可以包含某些文件,或者停止剥离这些标记,那就非常好.
我刚刚在MS Access中玩游戏,设计了一个大型数据库.现在我对设计感到满意,我需要能够从代码中生成相同的数据库(表,关系等).
我不想手写SQL CREATE语句(这将是漫长,乏味和容易出错的过程),而是想知道是否有快捷方式.我似乎记得,由于我对MySql的有限接触,我能够将整个数据库导出为SQL语句,然后可以运行该语句以重新生成该数据库.
您是否知道在MS Access中通过GUI或以编程方式执行此操作的方法?
什么时候使用任何语言的指针要求有人使用多个指针,让我们说一个三指针.什么时候使用三指针而不是只使用常规指针是有意义的?
例如:
char * * *ptr;
Run Code Online (Sandbox Code Playgroud)
代替
char *ptr;
Run Code Online (Sandbox Code Playgroud) 我创建了一个JavaScript脚本,可以粘贴在某人的页面上以创建iFrame.我希望该人能够将脚本粘贴到他们希望iFrame出现的位置.
但是,我无法弄清楚如何将DOM创建的iFrame附加到粘贴脚本的位置.它总是将它附加到身体的最底部.
我如何追加到位?
有没有办法在JavaScript执行另一个操作之前在JavaScript中睡觉?
例:
var a = 1+3;
// Sleep 3 seconds before the next action here
var b = a + 4;
Run Code Online (Sandbox Code Playgroud) 标题几乎构成了问题.我多年没有使用过CHAR.现在,我正在对一个包含CHAR的数据库进行逆向工程,包括主键,代码等.一个CHAR(30)列怎么样?
编辑:所以一般意见似乎是CHAR,如果对某些事情完全没问题.但是,我认为您可以设计一个不需要"这些特定事物"的数据库模式,因此不需要固定长度的字符串.使用bit,uniqueidentifier,varchar和text类型,似乎在一个良好规范化的模式中,当您使用编码的字符串值时,您将获得某种优雅.以固定长度思考,没有冒犯意味着,似乎是大型机时代的遗物(我曾经自己学过RPG II).我相信它已经过时了,我没有听到你声称不同的令人信服的论点.
什么是正则表达式验证字符串是否为pandigital(包含从1到9的所有数字一次)?
例如:
123456789
891364572
Run Code Online (Sandbox Code Playgroud)
但不是:
11234556789
25896471
Run Code Online (Sandbox Code Playgroud)
我知道如何在没有正则表达式的情况下执行此操作,但我无法为此形成正则表达式.
谢谢.
这不是功课.