小编Fau*_*ult的帖子

GLSL/HLSL - 与单个块相对的多个单行条件语句

对抗锯齿方法做了一些研究,我偶然发现了这段代码(从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)

我认为这是某种优化?看起来真的违反直觉......

opengl boolean-logic gpu glsl hlsl

6
推荐指数
1
解决办法
1441
查看次数

减少详细程度:将元素插入到地图中

我最近熟悉了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)

这是一个很好的理由吗?是否有一些简洁的方法使它不那么冗长?我知道[]运算符可以用于将元素插入到地图中,但功能略有不同.

c++ code-formatting verbosity c++11

5
推荐指数
3
解决办法
423
查看次数

基于其他信息的C++排序索引

假设我有一个顶点列表: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上面说明的方式使用?或者我最好使用键值数据结构/实现我自己的冒泡排序?

c++ sorting c++11

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

标签 统计

c++ ×2

c++11 ×2

boolean-logic ×1

code-formatting ×1

glsl ×1

gpu ×1

hlsl ×1

opengl ×1

sorting ×1

verbosity ×1