Функции OpenGL выдают ошибку FunctionNotSupported - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь создать 2D OpenGL-проект с использованием LWJGL 2, и у меня возникают проблемы с базовым рендерингом.

Основной класс:

public class ScratchCord {
private Renderer renderer;
public TextureManager manager;
private int i = 0;
private int i2 = 0;

private ScratchCord() {
    renderer = new Renderer(this);
    manager = new TextureManager();
    ContextAttribs attribs = new ContextAttribs(3, 2).withForwardCompatible(true).withProfileCore(true);
    try {
        Display.setDisplayMode(new DisplayMode(1240, 740));
        Display.create(new PixelFormat(), attribs);
        Display.setTitle("ScratchCord");
    } catch (LWJGLException e) {
        e.printStackTrace();
    }
    GL11.glViewport(0, 0, 1240, 740);
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glDisable(GL11.GL_DEPTH_TEST);
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glLoadIdentity();
    GL11.glOrtho(0, 1240, 740, 0, -1, 1);
}

private void start() {
    while (!Display.isCloseRequested()) {
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        renderer.draw(i, i2, "ScratchCord/src/main/resources/textures/download.jpg", 200, 200);
        Display.sync(60);
        Display.update();
        i += 1;
        i2 += 1;
    }
}

public static void main(String[] args) {
    System.setProperty("org.lwjgl.util.NoChecks","true");
    ScratchCord scratchCord = new ScratchCord();
    scratchCord.start();
}
}

По какой-то причине я получаюОшибка FunctionNotSupported, но код работает в http://www.cokeandcode.com/info/tut2d-4.html. Я попытался установить версию OpenGl на 2.0, и я получил ошибку в Display.create, и контекст OpenGL не был создан.Я слышал, что иногда графические драйверы могут сломать LWJGL, но мои обновляются и другие проекты у меня работают.Также некоторые люди говорят, что функции просто нет в 3.2, и если да, то как бы я это сделал?

1 Ответ

0 голосов
/ 11 октября 2018

Ваш компьютер, скорее всего, не поддерживает Legacy GL, что делает его "базовым" контекстом.В базовых контекстах устаревшие функции, такие как матричные операции, недоступны.

Найдите учебник для современного ядра opengl.

...