C# 无法编译着色器并获取错误Android Xamarin OpenGL ES 2.0
我正在使用Android Xamarin和OpenGL,我正在尝试制作一个简单的程序来在屏幕上渲染三角形,遵循以下教程:。但我的着色器似乎无法编译,当我尝试获取错误时,应用程序在OpenGL线程上出现SIGBART信号6崩溃。我的着色器存储在assets文件夹中,源代码加载良好(我可以通过Toast显示它) 这是我的顶点着色器代码:C# 无法编译着色器并获取错误Android Xamarin OpenGL ES 2.0,c#,android,xamarin,opengl-es,shader,C#,Android,Xamarin,Opengl Es,Shader,我正在使用Android Xamarin和OpenGL,我正在尝试制作一个简单的程序来在屏幕上渲染三角形,遵循以下教程:。但我的着色器似乎无法编译,当我尝试获取错误时,应用程序在OpenGL线程上出现SIGBART信号6崩溃。我的着色器存储在assets文件夹中,源代码加载良好(我可以通过Toast显示它) 这是我的顶点着色器代码: attribute vec4 vPosition; void main(){ gl_Position = vPosition; } using GL =
attribute vec4 vPosition;
void main(){
gl_Position = vPosition;
}
using GL = Android.Opengl.GLES20;
....
public enum ShaderType : int {
Vertex= GL.GlVertexShader, Fragment = GL.GlFragmentShader
}
....
public Shader(string name, ShaderType type)
{
string code = AssetsPipeline.ReadAsText(string.Format("Shaders/{0}", name));
GL.GlReleaseShaderCompiler();
GlId = GL.GlCreateShader((int)type);
Type = type;
GL.GlShaderSource(GlId, code);
GL.GlCompileShader(GlId);
int[] p = new int[1];
GL.GlGetShaderiv(GlId, GL.GlCompileStatus, p, 0);
if(p[0] == GL.GlFalse)
{
string error = GL.GlGetShaderInfoLog(GlId);
GL.GlDeleteShader(GlId);
GlId = 0;
}
}
这是我的着色器加载程序代码:
attribute vec4 vPosition;
void main(){
gl_Position = vPosition;
}
using GL = Android.Opengl.GLES20;
....
public enum ShaderType : int {
Vertex= GL.GlVertexShader, Fragment = GL.GlFragmentShader
}
....
public Shader(string name, ShaderType type)
{
string code = AssetsPipeline.ReadAsText(string.Format("Shaders/{0}", name));
GL.GlReleaseShaderCompiler();
GlId = GL.GlCreateShader((int)type);
Type = type;
GL.GlShaderSource(GlId, code);
GL.GlCompileShader(GlId);
int[] p = new int[1];
GL.GlGetShaderiv(GlId, GL.GlCompileStatus, p, 0);
if(p[0] == GL.GlFalse)
{
string error = GL.GlGetShaderInfoLog(GlId);
GL.GlDeleteShader(GlId);
GlId = 0;
}
}
着色器无法编译,当我调用GL.GlGetShaderInfoLog(GlId)
时,程序完全崩溃(我知道程序没有使用错误,但它甚至从未分配过错误)。如前所述,输出为SIGBART错误:
10-16 05:50:00.856 F/libc(11734):致命信号6(SIGABRT),tid 11764中的代码-6(GLThread 474)
表面看起来很好,当我删除GL.GlGetShaderInfoLog(GlId)
线时,背景画得很好。如果有人知道这是怎么发生的,或者我能解决谁的问题,我将非常感激。我没有在网上找到任何关于它的信息
谢谢,罗恩