我尝试加载CubeMap时程序崩溃。[OpenGL | C#] vhost32.exe在glTexImage2D停止工作
public static int LoadCubemap(string name, int size)
{
string folder = @"Resources\Textures\" + name + @"\";
int returnInt = GL.GenTexture();
GL.BindTexture(TextureTarget.TextureCubeMap, returnInt);
//bytesPerPixel * width * (height \ 6) * faceIndex
updloadTexture(TextureTarget.TextureCubeMapPositiveX, Image.FromFile(folder + "xpos.png"), size);
updloadTexture(TextureTarget.TextureCubeMapNegativeX, Image.FromFile(folder + "xneg.png"), size);
updloadTexture(TextureTarget.TextureCubeMapPositiveY, Image.FromFile(folder + "ypos.png"), size);
updloadTexture(TextureTarget.TextureCubeMapNegativeY, Image.FromFile(folder + "yneg.png"), size);
updloadTexture(TextureTarget.TextureCubeMapPositiveZ, Image.FromFile(folder + "zpos.png"), size);
updloadTexture(TextureTarget.TextureCubeMapNegativeZ, Image.FromFile(folder + "zneg.png"), size);
int nearest = (int)TextureMagFilter.Nearest;
GL.TexParameterI(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, ref nearest);
GL.TexParameterI(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, ref nearest);
GL.BindTexture(TextureTarget.TextureCubeMap, 0);
return returnInt;
}
private static void updloadTexture(TextureTarget target, Image texture, int size)
{
GL.TexImage2D(TextureTarget.TextureCubeMapNegativeZ, 0, PixelInternalFormat.Rgb, size, size, 0, PixelFormat.Rgb, PixelType.UnsignedByte, imageToByteArray(texture));
}
public static byte[] imageToByteArray(Image image)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(image, typeof(byte[]));
}
当GL.TexImage2D被调用时它崩溃了第3或第4次。我无法找到它为什么这样做。我使用.NET Image类和一个转换器,我在此论坛的其他一些主题上找到了将PNG转换为byte[]
的转换器。
所以,你似乎有一些代码一些错误使用从某处获取的某个库。这是否看起来像一个有用的问题陈述?如果没有,请[修复](http://stackoverflow.com/posts/41371737/edit)你的问题。 – IInspectable
我不明白你的评论,我使用的库是.NET,这是在问题中陈述。 imageToByteArray在另一个线程中,但你可以看到整个代码 - 我看不出你的意思。 –
*“我使用的转换器,我发现在这个论坛上的其他线程”* - 不谈,堆栈溢出不是一个论坛(这是一个问答网站),这是没有任何有用的信息。您还将保持精确的异常(和调用堆栈)为私有的,以及触发它的代码行。请看[问]。 – IInspectable