我没有清楚地了解coherent限定符和原子操作是如何协同工作的。
我使用以下代码在同一个 SSBO 位置执行一些累加操作:
uint prevValue, newValue;
uint readValue = ssbo[index];
do
{
prevValue = readValue;
newValue = F(readValue);
}
while((readValue = atomicCompSwap(ssbo[index], prevValue, newValue)) != prevValue);
Run Code Online (Sandbox Code Playgroud)
这段代码对我来说很好用,但是,coherent在这种情况下,我是否需要使用限定符声明 SSBO(或图像)?
我是否需要coherent在我只打电话的情况下使用atomicAdd?
我什么时候需要使用coherent限定符?我是否只需要在直接写入的情况下使用它:ssbo[index] = value;?
我尝试使用共享的 .pch 文件,该文件在一个项目中编译并在其他项目中使用。
但是,如果 PCH 项目的 .pdb 文件名与其他项目的 .pdb 文件名不同,则 .pch 文件将被删除。
此页面没有回答问题:https://devblogs.microsoft.com/cppblog/shared-pch-usage-sample-in-visual-studio/
我不想对所有 PDB 使用相同的名称。
问题:
1)为什么.pch文件在其他项目编译开始时被删除,这会导致C1083错误(.pch未找到),如果PDB名称不相等,不像该页面那样?
2)我使用 COPY 命令复制 pch.pdb 和 pch.idb 文件,是否有 RENAME 命令或其他命令,如果复制的 pch.pdb 应该像依赖项目的 PDB 一样命名?在哪里可以找到自定义构建步骤命令的完整列表?
3)我不明白自定义构建步骤中“附加依赖项”和“输出”的目的。我可以将 .pch 文件名输入到依赖项列表中,这样它就不会被删除吗?输出列表是否需要包含依赖项目的 PDB 名称或 pch.pdb,或两者都包含?
c++ msbuild custom-build-step precompiled-headers visual-studio
我刚刚意识到GL_ALPHA_TEST自OpenGL 3.0以来已被弃用,所以我无法使用它glEnable().我已经尝试快速谷歌如何更换它(以及为什么它被弃用),但未能找到这个简单问题的答案.我也没有找到有关GL_ALPHA_TEST在Khronos文档中删除的信息.
我建议现在根据其alpha值丢弃片段的唯一方法是片段着色器中的"discard"关键字.我对吗?