我有一个1024x1024的背景纹理,我正在尝试将100x100精灵(也存储在纹理中)渲染到背景纹理的左下角。
我想以50%的不透明度渲染精灵。这需要在CPU中完成,而不是使用着色器完成GPU。我发现的大多数例子都是使用着色器来实现这一点。
最好的方法是什么?
答案 0 :(得分:1)
我想你的意思是来自CPU端的opengl命令,因此使用固定功能(或固定管道)。我从“无着色器”请求中推断出这一点。 因为“在CPU上执行此操作”实际上意味着要对纹理进行检索/映射以在CPU上访问它,在像素上循环,并使用glTexImage将结果复制回图形卡,或者之后取消映射纹理。最后一种方法效率非常低。 所以你只需要激活混合。
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
按顺序渲染:背景,然后是你的100x100图像的小四边形。它将采用100x100图像的alpha通道进行混合。您可以从图像编辑工具将其设置为常数50%。