OpenGL显示空白屏幕。也许是因为着色器?

OpenGL显示空白屏幕。也许是因为着色器?

我的OpenGL ES应用程序不工作。我使用SDL进行窗口管理,它保存上下文。环顾四周后,我注意到顶点着色器和片段着色器在调试器上显示为0。甚至程序都是0。这会是一个原因吗?我遵循我的着色器编译并将代码链接到以前制作的模板。

如果是的话,又有什么问题呢?以下是代码:

代码语言:javascript运行复制GLuint ShaderHelper::compileShader(GLenum type, std::string fileName) {

std::string fileContents;

std::ifstream fin;

std::string path;

// Getting the necessary path...

// These are abstractions for getting file contents

// from the main bundle.

if (type == GL_VERTEX_SHADER) {

FileOpener opener;

path = opener.retriveFileFromBundle(fileName, "vsh");

} else if (type == GL_FRAGMENT_SHADER) {

FileOpener opener;

path = opener.retriveFileFromBundle(fileName, "fsh");

} else {

std::cout << "ERROR: Invalid shader type at filename " << fileName << std::endl;

exit(1);

}

fin.open(path);

if (!fin.is_open()) {

std::cout << "ERROR: Failed to open file " << fileName << std::endl;

exit(1);

}

// Retrieving the string from the file...

while (!fin.eof()) {

char CLine[255];

fin.getline(CLine, 255);

std::string line = CLine;

fileContents = fileContents + line;

fileContents = fileContents + " \n";

}

fin.close();

// I'm creating these variables because a pointer is needed for

// glShaderSource

GLuint shaderHandle = glCreateShader(type);

const GLint shaderStringLength = (GLint)fileContents.size();

const GLchar *shaderCString = fileContents.c_str();

glShaderSource(shaderHandle, 1, &shaderCString, &shaderStringLength);

glCompileShader(shaderHandle);

return shaderHandle;

}

void ShaderHelper::linkProgram(std::vector shaderArray) {

program = glCreateProgram();

for (int i = 0; i < shaderArray.size(); i++) {

glAttachShader(program, *shaderArray[i]);

}

glLinkProgram(program);

}

void ShaderHelper::addUniform(uniform_t uniform) {

std::string name = uniform.name;

uniforms[name] = uniform;

// With that step done, we need to assign the location...

uniforms[name].location = glGetUniformLocation(program, uniforms[name].name.c_str());

}编辑:根据建议,我通过glError()运行我的代码。我修正了一个错误,但我仍然有一个空白的屏幕。我不再得到0作为我的阴影值。我将glClearColor设置为白色图像,它只是显示为纯白色。我调整了MV矩阵和投影矩阵中的数字,但仍然什么也没有。我残废了面容,但还是什么都没有。此外,着色器正在编译和链接良好。那现在怎么办?

相关推荐

2016年是什么年 2016年是平年还是闰年
365bet网投娱乐

2016年是什么年 2016年是平年还是闰年

📅 08-11 👁️ 173