对抗锯齿方法做了一些研究,我偶然发现了这段代码(从Nvidia的FXAA着色器中抓取):
if(!pairN) lumaN = lumaS;
if(!pairN) gradientN = gradientS;
if(!pairN) lengthSign *= -1.0;
Run Code Online (Sandbox Code Playgroud)
是不是有一个很好的理由不是作为以下内容写的?
if (!pairN) {
lumaN = lumaS;
gradientN = gradientS;
lengthSign *= -1.0;
}
Run Code Online (Sandbox Code Playgroud)
我认为这是某种优化?看起来真的违反直觉......
我最近熟悉了C++ 11,auto
关键字很棒!打字:
for (auto bar : bars) {
Run Code Online (Sandbox Code Playgroud)
哦,太令人满意了.保持代码可读性和漂亮性.还有什么感觉它会阻止你所有的动力如下:
foo.insert(std::pair<std::string, bar>("soVerbose", baz));
// As opposed to simply:
foo.insert("soVerbose", baz);
Run Code Online (Sandbox Code Playgroud)
这是一个很好的理由吗?是否有一些简洁的方法使它不那么冗长?我知道[]
运算符可以用于将元素插入到地图中,但功能略有不同.
假设我有一个顶点列表:std::vector<vec3> vertices
和索引列表:std::vector<unsigned int>
.然后,我想要根据索引std::sort
的大小,但不是基于它们指向的顶点坐标来对这些索引进行排序.这就是我的意思:
std::sort(indices.begin(), indices.end(),
[](unsigned int indexA, unsigned int indexB) {
return vertices[indexA].x < vertices[indexB].x;
});
Run Code Online (Sandbox Code Playgroud)
在一个完美的世界中,以下内容将根据指向的顶点的x坐标对索引进行排序.但是,这不是lambda函数的工作方式,我无法访问这些vertices
信息.
有没有办法以std::sort
上面说明的方式使用?或者我最好使用键值数据结构/实现我自己的冒泡排序?