【问题标题】:stopping anti-aliasing of textures in JOGL在 JOGL 中停止纹理的抗锯齿
【发布时间】:2013-02-18 06:47:58
【问题描述】:

我对 JOGL 还很陌生,我试图让我的所有纹理都禁用抗锯齿功能。虽然由于某种原因,它只适用于字母“S”的纹理。

这是我所有的课程:

主要:pastebin.com/qxCJKbbE

房间:pastebin.com/mKFSgqBp

主菜单:pastebin.com/tihb3wAX

渲染助手:pastebin.com/qfzXqCQY

i.imgur.com/qMRyG0j.png

另外,显然我不允许在没有更多声誉的情况下发布超过 2 个链接或图片,所以我只是拿走了 http:\\ 并链接了图片。

【问题讨论】:

  • 不要指望人们浏览你的整个代码库并弄清楚发生了什么;找出问题并发布选定的代码。
  • 我已经尝试了所有我能找到的东西。似乎没有任何效果。问题显然出在纹理中,因为它仅适用于该纹理。尽管在整个代码中对该纹理没有任何不同。我只是问我是否有一些特殊的方法可以做到这一点。你知道,我的代码并没有那么大。我只是有一个真正的游戏循环,它调用重定向到当前房间并渲染的渲染。从房间里你可以看到一些 renderhelper 类绘制立方体。如果我的代码更复杂,我会理解的。

标签: java jogl antialiasing


【解决方案1】:

glTexParameterf 只影响当前绑定的纹理。您应该在加载/设置期间为每个纹理设置不变的纹理参数。

为此,您还可以使用Texture 类的便捷方法,例如:

C = render.getTexture("E:\\MAndWorks\\resources\\font\\C.png");
C.setTexParameterf(GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_NEAREST);
// (note that this also binds the texture behind the scenes)

它对字母“S”起作用的原因是它是您在渲染过程中渲染的最后一个纹理,因此当您在下一次调用display 时设置纹理参数时它仍然被绑定,有效地设置了“S”纹理的参数。

祝你好运。

【讨论】:

  • 非常感谢!这一定是我错过的技巧!我的印象是,只有在 init(GLAutoDrawable) 调用中才需要那段代码。我马上去试试!
  • 所以,我明白你的意思是通过保持不变的参数,但如果我尝试在设置C 之后简单地添加C.setTexParameterf(GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_NEAREST);,它会给我一个错误,因为这样的方法不会存在。编辑:原来该方法需要另一个参数,一个 GL2 对象。为了实现这一点,我在 MainMenu 构造函数中添加了一个 GL2 参数,该参数传递到 setTexParameterf(GL2, int, float);
猜你喜欢
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 2015-05-10
  • 2012-01-12
相关资源
最近更新 更多