【问题标题】:How to make OpenGL support shades of colours?如何使 OpenGL 支持颜色深浅?
【发布时间】:2013-07-30 11:09:19
【问题描述】:

我正在使用 LWJGL 在 Java 中包裹 OpenGL,但显然所有颜色都被转换为基本阴影。我不是 100% 确定这里的英语措辞,所以如果我设置,请尝试使其更清晰:

glClearColor(0.3, 0.3, 0.6, 1.0)

我最后得到的是等价于

glClearColor(1.0, 1.0, 1.0, 1.0)

基本上,每当我在颜色的任何红色/绿色/蓝色分量中使用不是 0.0 的东西时,我都会得到与使用 1.0 时相同的行为。

在 OpenGL 初始化期间,我几乎只设置透视图:

    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glLoadIdentity();
    GL11.glOrtho(0, DisplayManager.getWidth(), DisplayManager.getHeight(), 0, 1, -1);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);

在渲染过程中,我只是尝试用背景颜色清除:

    // clear buffer
    GL11.glClearColor(0x46, 0x82, 0xb4, 1.0f);
    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);

基本上背景应该是蓝色,但我得到的是白色(即 1.0、1.0、1.0、1.0)。

我需要设置什么(OpenGL 标志或其他)才能实现这一点吗?我只是在某个地方愚蠢,我不知道在哪里吗? :)

提前致谢

【问题讨论】:

  • 您是否检查过您没有将浮点数转换为 int?在 Java 中,它可能会隐式发生......而且这些 - 0x46 是整数,那么您如何期望它们是浮点数?

标签: opengl lwjgl


【解决方案1】:
GL11.glClearColor(0x46, 0x82, 0xb4, 1.0f);

0x46 大于 1.0,因此被钳制为 1.0。白色。

glClearColor 需要 0.0 到 1.0 范围内的浮点数作为输入,而不是 0 到 255 (0xFF) 之间的整数。

试试这个:

GL11.glClearColor(0x46 / 255.0f, 0x82 / 255.0f, 0xb4 / 255.0f, 1.0f);

【讨论】:

  • 我知道我很笨 :)
猜你喜欢
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
相关资源
最近更新 更多