- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的自定义 Canvas
import com.jogamp.opengl.GL;
import com.jogamp.opengl.GL2;
import com.jogamp.opengl.GLAutoDrawable;
import com.jogamp.opengl.GLEventListener;
import com.jogamp.opengl.awt.GLCanvas;
import com.jogamp.opengl.glu.GLU;
import com.jogamp.opengl.util.awt.TextRenderer;
import java.awt.*;
public class MyCanvas extends GLCanvas implements GLEventListener {
private GLU glu;
public MyCanvas() {
this.addGLEventListener(this);
}
TextRenderer renderer;
@Override
public void init(GLAutoDrawable drawable) {
renderer = new TextRenderer(new Font("SansSerif", Font.BOLD, 16));
GL2 gl = drawable.getGL().getGL2();
glu = new GLU();
gl.glClearColor(1f, 1f, 1f, 1f);
gl.glClearDepth(1.0f);
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glDepthFunc(GL.GL_LEQUAL);
gl.glHint(GL2.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);
gl.glShadeModel(GL2.GL_SMOOTH);
}
@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL2 gl = drawable.getGL().getGL2();
if (height == 0) height = 1;
float aspect = (float)width / height;
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(45.0, aspect, 0.1, 100.0);
gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
}
@Override
public void display(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
gl.glTranslatef(0.0f, 0.0f, -50f);
gl.glColor3f(0.5f, 0.5f, 0.5f);
gl.glBegin(GL2.GL_TRIANGLES);
gl.glVertex3f(0.0f, 1.0f, 0.0f);
gl.glVertex3f(-1.0f, -1.0f, 0.0f);
gl.glVertex3f(1.0f, -1.0f, 0.0f);
gl.glEnd();
String text = "Text";
renderer.setColor(Color.BLACK);
renderer.begin3DRendering();
gl.glPushMatrix();
gl.glTranslated(0, 0, 0);
renderer.draw(text, 0, 0);
renderer.flush();
gl.glPopMatrix();
renderer.end3DRendering();
}
@Override
public void dispose(GLAutoDrawable drawable) { }
}
我有一个简单的 JFrame 来显示这个 Canvas 。
import com.jogamp.opengl.awt.GLCanvas;
import com.jogamp.opengl.util.FPSAnimator;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class App extends JFrame {
private static final int CANVAS_WIDTH = 640;
private static final int CANVAS_HEIGHT = 480;
private static final int FPS = 60;
public App() {
GLCanvas canvas = new MyCanvas();
canvas.setPreferredSize(new Dimension(CANVAS_WIDTH, CANVAS_HEIGHT));
final FPSAnimator animator = new FPSAnimator(canvas, FPS, true);
this.getContentPane().add(canvas);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
new Thread() {
@Override
public void run() {
if (animator.isStarted()) animator.stop();
System.exit(0);
}
}.start();
}
});
this.setTitle("JOGL (GLCanvas)");
this.pack();
this.setVisible(true);
animator.start();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(App::new);
}
}
当我减小文字大小时,文字变得越来越模糊。我应该怎么做才能获得清晰的文本?
最佳答案
文本模糊,因为字体大小与屏幕上呈现的大小不匹配,并且使用双线性插值来放大字体/字体纹理。
出现此问题的原因可能是您混合了 2D 和 3D 文本渲染功能。您应该使用 begin3DRendering
、draw3D
和 end3DRendering
,您可以在其中使用缩放参数控制文本的实际大小,或者您使用 beginRendering
、draw
和 endRendering
,其中正交投影用于将像素从字体映射到屏幕。
关于java - GLCanvas 上的模糊文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42175761/
我有一个简单的自定义 Canvas import com.jogamp.opengl.GL; import com.jogamp.opengl.GL2; import com.jogamp.openg
我希望在 3D OpenGL View 上绘制某种 HUD,但似乎在我的面板中完成的任何绘制都会被忽略,尽管它已经完成了。 这是一些准系统代码。 我的框架; public class MyFrame
我对显示在 GLCanvas 后面的 JMenuItem 有一些问题。 第一次单击 JMenuItem 时,它显示在 GLCanvas 前面,但是一旦单击 JSplit 拉伸(stretch)它,我就
我正在尝试将带有 OpenGL 内容的 GLCanvas 添加到 JPanel。 JPanel 位于 JTabbedPane 内。但是当 GLCanvas 在 JPanel 内部时,面板只是灰色的。当
单击 JMenu 选项导致我的 JOGL GLCanvas 闪烁。 JMenu 将 setDefaultLightWeightPopupEnabled 设置为 false。我不想使用 JGLPanel
我在带有 BorderLayout 的 jpanel 内有一个 glcanvas。 Canvas 的大小应取决于窗口的大小。初始大小通过设置 glCanvas.setSize(640, 480); 然
如何更改现有 GLCanvas 的 GLCapability? 我想这样做,以便我可以更改 FSAA(抗锯齿)样本,而无需重新创建 GLCanvas。 最佳答案 你不能。默认帧缓冲区的性质是在上下文创
我想让 JButton panel 占用 frame 水平空间的约 30%。 右侧的 glCanvas 占据了 frame 的其余空间。 我怎样才能实现这个布局? 目前: Main.java GLPr
我正在使用 GLCanvas 创建一个 wx.Frame。在某些平台上,将 Canvas 的 WX_GL_DEPTH_SIZE 属性设置为 32 效果很好。在另一个平台上,除非将深度大小减少到 16,
只是好奇,你将如何使用 openGL GLCanvas 的键绑定(bind)?我了解如何将它们与 JPanel(适用于 GLPanel)一起使用,但是否可以将其与 GLCanvas 一起使用?如果可能
所以当我开始掌握 java paint(Graphics g){} 方法我继续创建自己的渲染方法,但我必须了解缓冲区策略以及如何“获取”图形 所以现在我正在学习openGL,我必须掌握方法: @Ove
我正在使用 Swing 创建组件并使用 GLCanvas (com.jogamp.opengl.awt.GLCanvas) 创建我的窗口。 接下来就是问题了 在初始状态下,一切正常,但是当我拖动窗口调
我在尝试使用 Netbeans 6.9 编译 JOGL 程序时遇到了可怕的问题。我似乎无法找到有关如何执行此操作的最新解释。当我安装 NetBeans OpenGL 包时,我无法编译示例。我收到一个编
在以下程序(取决于 JOGL)中,当工具提示“适合”在 内时,JLabel 的工具提示隐藏在重量级 GLCanvas 后面。 GLCanvas. import java.awt.*; import j
我有一个带有 GLCanvas 的 JFrame。当我调用 JFrame 的 Component.printAll() 方法然后将 Graphics2D 对象打印到 png 文件(使用 Buffere
我正在尝试在 Eclipse 中将 JOGL 与 Scala 结合使用,但作为 JOGL/Scala 的新手,我遇到了一些依赖性错误,我无法弄清这些错误。谷歌搜索没有返回任何有用的信息。 我已经建立了
我从 here 下载了 jogl 2.0 ,文件 jogl-all.jar ,并运行了一个取自 here 的简单代码示例: import java.awt.event.KeyEvent; import
我是一名优秀的程序员,十分优秀!