Текстовый рендерер OpenGL не отображает английские латинские буквыJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Текстовый рендерер OpenGL не отображает английские латинские буквы

Сообщение Anonymous »

У меня есть простой код для отображения заданной буквы:
минимальный воспроизводимый пример:

Код: Выделить всё

import com.jogamp.opengl.GL4;
import com.jogamp.opengl.GLAutoDrawable;
import com.jogamp.opengl.GLEventListener;
import com.jogamp.opengl.awt.GLCanvas;
import com.jogamp.opengl.util.awt.TextRenderer;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import static com.jogamp.opengl.GL4.*;

public class Test extends Frame implements GLEventListener {
private static int[] vao = new int[1];
private static int[] vbo = new int[4];

private static GLCanvas canvas;
private static GL4 gl;
private static int WIDTH = 750, HEIGHT = 750;

private TextRenderer textRenderer;

public Test() {
canvas = new GLCanvas();
canvas.addGLEventListener(this);
this.add(canvas);
this.setSize(WIDTH, HEIGHT);
this.setVisible(true);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}

public static void main(String[] args) {
new Test();
}

@Override
public void init(GLAutoDrawable drawable) {
gl = (GL4) drawable.getGL();
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

gl.glGenVertexArrays(vao.length, vao, 0);
gl.glBindVertexArray(vao[0]);
gl.glGenBuffers(vbo.length, vbo, 0);
gl.glEnableVertexAttribArray(0);
gl.glEnableVertexAttribArray(1);

textRenderer = new TextRenderer(new Font("Arial", Font.BOLD, 20));
}

@Override
public void display(GLAutoDrawable drawable) {
gl.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

String letter = "Й";  // Й works, S doesn't
textRenderer.beginRendering(WIDTH, HEIGHT);
textRenderer.setColor(Color.WHITE);
textRenderer.draw(letter, WIDTH / 2, HEIGHT / 2);
textRenderer.endRendering();
}

@Override
public void dispose(GLAutoDrawable drawable) {
textRenderer.dispose();
}

@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {}
}
Когда буквой является «S», ничего не отображается (только черный фон). Однако если я поменяю буквы на «Й», оно отобразится (белая буква Й на черном фоне).
Нет Не понимаю, что может быть причиной такого поведения, почему не отображаются английские буквы?

Подробнее здесь: https://stackoverflow.com/questions/791 ... in-letters
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»