小编AzP*_*AzP的帖子

OpenGL调试上下文性能警告

我已经设法实现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个上下文),所以看看我是否能够修复警告会很有趣并一劳永逸地摆脱它.

opengl opengl-3

14
推荐指数
2
解决办法
4356
查看次数

Valgrind抱怨"写入8号无效"

我正在开发一个小型的爱好项目(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)

c debugging valgrind memory-management

10
推荐指数
1
解决办法
3万
查看次数

在C++/CLI中使用unique_ptr时出现链接器错误

我目前正在转换我的实例auto_ptrunique_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)

c++ c++-cli visual-studio-2010 unique-ptr c++11

8
推荐指数
1
解决办法
3662
查看次数