我已经设法实现OpenGL调试上下文(真棒,最后!)并且大多数事情看起来都很好,但是我看到了一个性能警告,我无法找到有关的信息.
[ 0.0330 - 388.6340] OpenGL Version: 4.2.0 Quadro 600/PCIe/SSE2 NVIDIA Corporation
[ 0.0000 - 549.1920] OpenGL: Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches. [source=API type=PERFORMANCE severity=MEDIUM id=131218]
Run Code Online (Sandbox Code Playgroud)
我知道自从上次编译着色器以来,它与OpenGL状态有关.
我们拥有的是在上下文之间共享的纹理上运行的四个着色器,并且错误信息仅在创建新上下文后显示.因此,上下文创建可能会改变OpenGL状态机的状态.有可能甚至无法解决它,因为每个上下文都以它自己的"干净"状态机开始吗?
这可能不是什么大问题,因为它只发生在上下文创建时,但是我们运行了很多上下文(至少同时有15个上下文),所以看看我是否能够修复警告会很有趣并一劳永逸地摆脱它.
我正在开发一个小型的爱好项目(www.github.com/AzP/GLSL-Validate),我已经采用旧代码(过多的c和小c ++用于我自己的口味,但是,嘿,你能做什么? )我正试图在Linux和Windows上运行它.我有几次崩溃(现在有希望修复),但是自从我开始运行Valgrind以找到问题后,我一直想要解决我得到的抱怨.
我只是看不出这个代码有什么问题(除了在Valgrind投诉方面很难读出好看的"神奇数字").
我用以下命令运行Valgrind valgrind --track-origins=yes ./Program
291 //
292 // Malloc a string of sufficient size and read a string into it.
293 //
294 # define MAX_SOURCE_STRINGS 5
295 char** ReadFileData(char *fileName)
296 {
297 FILE *in = fopen(fileName, "r");
298 char *fdata;
299 int count = 0;
300 char**return_data=(char**)malloc(MAX_SOURCE_STRINGS+1);
301
302 //return_data[MAX_SOURCE_STRINGS]=NULL;
303 if (!in) {
304 printf("Error: unable to open input file: %s\n", fileName);
305 return 0;
306 }
307
308 // Count …
Run Code Online (Sandbox Code Playgroud) 我目前正在转换我的实例auto_ptr
来unique_ptr
,但我打的问题.它在C++部分代码中运行良好,但是当我在托管C++/CLI层(软件同时使用C#和C++)中执行此操作时,我会收到链接错误.编译很好,但它在链接时断开.从来没有任何问题auto_ptr
.
我目前正在使用Visual Studio 2010.有人知道unique_ptr
在C++/CLI中使用有任何问题吗?
我试着在下面的一段代码中总结我的问题,但请注意下面的代码实际编译并工作(我检查指针的所有权是否正确移动).编译时我没有收到链接错误,但下面的代码是纯C++而不是C++/CLI.我只是希望有一个关于如何构造代码的最小示例,因此链接器错误使读取更有意义.
#include "stdafx.h"
#include <vector>
#include <memory>
#include <utility>
using namespace std;
namespace Test {
template< class T >
struct LinAlgPoint3 {
LinAlgPoint3() { x = y = z = 0; };
union {
struct {T x,y,z;} ;
T data_[3];
};
};
class ContainerClass
{
public:
void setUniquePtr(
unique_ptr< vector< LinAlgPoint3< float > > > newUniquePtr1 ,
unique_ptr< vector< unsigned char > > newUniquePtr2 )
{ …
Run Code Online (Sandbox Code Playgroud)