小编Cru*_*row的帖子

现代游戏和其他3D应用程序的跨性别

我已经学习了一段时间的OpenGL和3D图形,我遇到了众所周知的问题:透明度,半透明度和绘制顺序依赖性.

我知道不同的alpha混合算法:减法,这是最好的,但需要正确的排序; 加法或乘法,与顺序无关,但结果不佳; 禁用z缓冲技术; 等等.

所以,我得到的主要结论是:没有神奇的方法来做透明度.

问题是:如何在现代游戏中实施透明度?我的意思是,在它们中有明确的反对物体:窗户,眼镜等.我想学习这个问题的最佳实践 - 这是如何在"大联盟"中完成的,但我还没有找到任何关于此的论文学科.

opengl directx

2
推荐指数
1
解决办法
111
查看次数

Visual Studio 2012中的std :: function目标方法

我有以下代码:

#include <functional>

//...

typedef int (*Myfun)(int);
std::function<int (int)> fn0([](int a)->int {
    return -a;
});
std::cout << "val == " << fn0(3) << std::endl; //"val == -3"
Myfun *fptr = fn0.target<Myfun>(); //fptr is NULL!!
std::cout << "val == " << (*fptr)(3) << std::endl; //Access violation error
Run Code Online (Sandbox Code Playgroud)

实际上,这段代码是来自MSDN的代码,稍有改动:使用lambda而不是普通函数.

为什么调用fn0.target<Myfun>()返回NULL?

当我宣布一个常规功能

int neg(int val) { 
    return (-val); 
}
Run Code Online (Sandbox Code Playgroud)

并写std::function<int (int)> fn0(neg);,一切似乎都有效,但lambda没有得到正确处理.

c++ lambda c++11 visual-studio-2012

0
推荐指数
1
解决办法
242
查看次数

标签 统计

c++ ×1

c++11 ×1

directx ×1

lambda ×1

opengl ×1

visual-studio-2012 ×1