Reputation: 5136
I have this simple code for displaying a given letter:
minimal reproducible example:
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) {}
}
When letters
is "S"
, nothing is displayed (only black background). However, if I change letters
to "Й"
, it is displayed (white letter Й
on a black background).
I don't understand, what could be causing this behavior, why English letters are not displayed?
Upvotes: 2
Views: 70