在我的程序中,我有一个名为ShaderManager的类,它封装了我使用的所有GLSL着色器,ShaderManager :: LoadShader()应该在每次调用时增加可用着色器的数量(shaderCount)。
问题是shaderCount++;
不会增加shaderCount(unsigned int)的值。 shaderCount将为0,即使在增量操作之后它也将保持为零。当我写出shaderCount = shaderCount + 1
时,同样的问题。
在ShaderManager.cpp中:
unsigned int ShaderManager::LoadShader(const char* vertFilename, const char* fragFilename)
{
/* ... OpenGL code ... */
shaderCount = shaderCount + 1;
return shaders[shaderCount - 1];
}
ShaderManager :: LoadShader()不是static或const。
在ShaderManager.h中:
class ShaderManager
{
public:
static const unsigned int MAX_SHADERS = 32;
ShaderManager();
~ShaderManager();
unsigned int LoadShader(const char* vertFilename, const char* fragFilename);
static unsigned int GetShaderID(const unsigned int shader);
private:
unsigned int shaderCount;
void SetupDefaultShader();
static unsigned int shaders[MAX_SHADERS];
};
知道会发生什么事吗?