Не могу получить рендеринг EasyFont в моей игре lwjgl3 - PullRequest
2 голосов
/ 29 марта 2020

Следующая демонстрация хорошо работает с собственной программой https://github.com/LWJGL/lwjgl3/blob/master/modules/samples/src/test/java/org/lwjgl/demo/stb/EasyFont.java
, но я просто не могу получить ее в своей игре. Я скопировал из строки 53 в строку 63 (сделайте это методом draw ()) в свою игру l oop,
и поместил другие вещи (например, перед l oop в исходном коде) в Метод init (),

    public void init(){
        ByteBuffer charBuffer = BufferUtils.createByteBuffer(text.length() * 270);

        int quads = stb_easy_font_print(0, 0, getText(), null, charBuffer);

        glEnableClientState(GL_VERTEX_ARRAY);
        glVertexPointer(2, GL_FLOAT, 16, charBuffer);

        glClearColor(43f / 255f, 43f / 255f, 43f / 255f, 0f); // BG color
        glColor3f(169f / 255f, 183f / 255f, 198f / 255f); // Text color

    }

    public void draw(){
        float scaleFactor = 1.0f + getScale() * 0.25f;

        glPushMatrix();
        // Zoom
        glScalef(scaleFactor, scaleFactor, 1f);
        // Scroll
        glTranslatef(4.0f, 4.0f - getLineOffset() * getFontHeight(), 0f);

        glDrawArrays(GL_QUADS, 0, quads * 4);

        glPopMatrix();

    }

, но я просто не вижу текста в своей игре, потому что я использую шейдер (я пытался отсоединить его, но не работал )
или камера (которая относится к "проекционной" форме Matrix4f в шейдере) или VBO?
или мне нужно заняться чем-нибудь привлекательным или glDisable? моя игра l oop выглядит так

glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); 
shader.bind();
mainCamera.getPosition().lerp(new Vector3f(0.64f*main.getPos().x,0.86f*main.getPos().y,0).mul(-1,new Vector3f()), 0.07f);
onEntitiesDraw();
input.update();
EasyFont.draw();  //much the same as in the while loop of original code
glfwSwapBuffers(window);
glfwPollEvents();

1 Ответ

1 голос
/ 29 марта 2020

решаемая. Тексты отображаются, но в темном цвете,
, поэтому я едва могу их видеть.
Чтобы сделать его тем цветом, который мы назначили в этом glColor3f (),
, нам просто нужно сделать glDisable (GL_TEXTURE_2D).

...