Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 如何在命令行中检查glsl代码?_Opengl_Vim_Glsl_Minecraft_Micro - Fatal编程技术网

Opengl 如何在命令行中检查glsl代码?

Opengl 如何在命令行中检查glsl代码?,opengl,vim,glsl,minecraft,micro,Opengl,Vim,Glsl,Minecraft,Micro,我正在使用电脑上的KDE终端,通过ssh在手机上编辑Minecraft pe的着色器。 语法高亮显示效果很好,但它甚至不显示最简单的错误。 例如,在下面的代码中,我至少列出了两个错误,主要是词汇错误 vec4 no`rm`alColor; void main(){ nomralColor = vec3(1.0,1.0,1.0,1.0);//vec3 != vec4 gl_FragColor = nomralColor;//normalColorl != nomralColor

我正在使用电脑上的KDE终端,通过ssh在手机上编辑Minecraft pe的着色器。 语法高亮显示效果很好,但它甚至不显示最简单的错误。 例如,在下面的代码中,我至少列出了两个错误,主要是词汇错误

vec4 no`rm`alColor;

void main(){
    nomralColor = vec3(1.0,1.0,1.0,1.0);//vec3 != vec4
    gl_FragColor = nomralColor;//normalColorl != nomralColor
}

是否有任何可能的方法可以使用可用的命令行代码编辑器(nano/vim/micro)检查glsl代码中最简单的(列表词法)错误?

我建议制作一个可以用来检查的小工具。下面的代码只是在控制台窗口中打印出错误。你可以用C++或java编写Android代码,我会给你C++例子,因为所有的OpenGL调用在java中也是一样的。 它确实很短,您只需使用
glCreateShader()
glCompileShader()
来尝试编译它,然后使用
glgetshaderingfolog()
来提供错误消息

//tell openGL to do all the work for us
bool compileShader(GLuint shaderID, std::string shaderCode) {
    // Compile Shader
    glShaderSource(shaderID, 1, (const char* const*)shaderCode.c_str(), NULL);
    glCompileShader(shaderID);

    // Check Shader
    GLint Result = GL_FALSE;
    int InfoLogLength;
    glGetShaderiv(shaderID, GL_COMPILE_STATUS, &Result);
    glGetShaderiv(shaderID, GL_INFO_LOG_LENGTH, &InfoLogLength);
    // Do we have an error message?
    if (InfoLogLength > 0){
        std::vector<char> shaderErrorMessage(InfoLogLength + 1);
        // Get the message text
        glGetShaderInfoLog(shaderID, InfoLogLength, NULL, &shaderErrorMessage[0]);

#ifdef DBG_SHADER
        printf("Compilation error:\n%s", &shaderErrorMessage[0]);
#endif

        return false;
    }
    return true;
}
GLuint FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
bool succeeded = compileShader(FragmentShaderID, FragmentShaderCode);