php 편집자 Yuzai는 컴파일 중에 GLSL 프래그먼트 셰이더에 문제가 발생했지만 오류 메시지가 없음을 발견했습니다. 이로 인해 개발자는 무엇이 잘못되었는지 혼란스러워할 수 있습니다. 이 문제를 해결하기 전에 가장 먼저 명확히 해야 할 것은 일반적으로 컴파일러가 오류 메시지를 생성하지 않았거나 오류 메시지가 무시되었기 때문에 오류 메시지가 없다는 것입니다. 다음으로 가능한 원인을 단계별로 해결하여 해결책을 찾아야 합니다.
저는 OpenGl용 go-GL 바인딩을 사용하고 있습니다.
두 셰이더의 소스를 다음과 같이 정의했습니다.
으아악Vertex 셰이더는 문제 없이 생성 및 컴파일됩니다.
다음은 프래그먼트 셰이더를 생성하고 컴파일하는 코드입니다.
으아악다음을 출력합니다(안타깝게도 정보 로그 메시지가 없음).
으아악버전core
/compatibility
之间切换,更改 FragColor
的名称以及 vec4
에서는 다른 값을 시도했습니다.
댓글도 달아보았습니다if
块并继续创建该程序。检查程序的块输出一个错误,这是预期的,因为着色器未编译: error: linking with uncompiled/unspecializedshader
프래그먼트 셰이더를 컴파일하는 방법에 대한 피드백이 있나요?
전화glShaderSource()
仅设置源着色器的代码。它无法编译。之后需要单独调用glCompileShader()
.
으아악
원인 gl.GetShaderiv()
gl.GetShaderiv()
与gl.COMPILE_STATUS
结果 success
为 gl.FALSE
。是因为如果上次编译成功, gl.COMPILE_STATUS
只会产生 gl.TRUE
。但是,由于您从未调用过 gl.CompileShader()
,因此之前没有成功编译,因此您收到 gl.FALSE
및 gl.COMPILE_STATUS
결과는 성공
이 gl.FALSE
입니다. 이는 gl.COMPILE_STATUS
가 마지막 컴파일이 성공한 경우에만 gl.TRUE
를 생성하기 때문입니다. 그러나 gl.CompileShader()
를 호출한 적이 없으므로 이전에 성공적인 컴파일이 없었으므로 gl.FALSE
가 수신됩니다. 또한 지금까지 오류가 없었기 때문에 정보 로그가 비어 있습니다.
위 내용은 GLSL 조각 셰이더가 메시지 없이 컴파일되지 않습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!