OpenTK Texture показывает полный черный

Итак, я взял некоторый код, который отлично работает на других программах, я скопировал его в новую программу, над которой я работаю, и она, кажется, не работает, насколько я знаю, у меня есть все необходимое там есть линии, но области, где текстура должна появиться, просто отображают черные квадраты.

Я думаю, что мне не хватает линии, но я понятия не имею, что это такое. Я довольно озадачен, если не сказать больше.

Вот моя установка opengl:

GL.ClearColor(Color.Black);
GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
GL.Viewport(0, 0, glControl1.Width, glControl1.Height);
GL.Ortho(0, 800, 600, 0, -30, 30);

Это метод, который загружает текстуры и возвращает идентификатор текстуры, я сохраняю это в своей переменной. (файл.writeallbytes это просто тест, я могу открыть, что нет проблем в фотошопе)

private int loadTexture(String path)
{
    GL.Enable(EnableCap.Texture2D);

    byte[] ddsBytes = Media.GetFile("\\"+path.Replace("\\\\","\\")).Skip(20).ToArray();
    File.WriteAllBytes("Derp.dds", ddsBytes);

    int texId = GL.GenTexture();
    GL.BindTexture(TextureTarget.Texture2D, texId);

    Bitmap image = null;

    DDSReader.DDSImage ddsImg = new DDSReader.DDSImage(ddsBytes);
    image = ddsImg.BitmapImage;
    ddsImg = null;

    BitmapData bmpData = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

    GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bmpData.Width, bmpData.Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmpData.Scan0);

    image.UnlockBits(bmpData);
    GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
    GL.TexEnv(TextureEnvTarget.TextureEnv, TextureEnvParameter.TextureEnvMode, (int)All.Modulate);

    return texId;
}

И мой метод рисования выглядит так:

public void Draw()
{
    if (TexID == -1)
    {
        GL.Color4(Color[0], Color[1], Color[2], (byte)100);
    }
    else
    {
        GL.Color3((byte)255,(byte)255,(byte)255);
        GL.Enable(EnableCap.Texture2D);
        GL.BindTexture(TextureTarget.Texture2D, TexID);
    }

    GL.Begin(BeginMode.TriangleStrip);
    GL.TexCoord2(0, 0);
    GL.Vertex2(X, Y + Height);
    GL.TexCoord2(0, 1);
    GL.Vertex2(X, Y);
    GL.TexCoord2(1, 0);
    GL.Vertex2(X + Width, Y + Height);
    GL.TexCoord2(1, 1);
    GL.Vertex2(X  +Width, Y);
    GL.End();

    GL.Disable(EnableCap.Texture2D);
}

РЕДАКТИРОВАТЬ: текстура действительно появляется, но текстура полностью черный, даже когда я устанавливаю другое значение цвета (которое обычно меняет оттенок текстуры)

0 ответов

Другие вопросы по тегам