gpt4 book ai didi

java - 在 lwjgl (Java) 中的文本渲染初始化代码后无法绘制任何内容

转载 作者:行者123 更新时间:2023-12-01 23:15:16 24 4
gpt4 key购买 nike

您好,我有两个单独的初始化代码,用于在 lwjgl 中渲染 2d 形状和(2d)文本之间切换。如果执行渲染文本的初始化代码,则不会绘制 2d 形状。我尝试了一切,发现了问题行:GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

在我使用 glBlendFunc 完成某些操作后,我只能渲染 tekst,并且切换到渲染 2d 形状的初始化代码将不再起作用。

这是我的两个代码:

简单的二维渲染:

GL11.glEnable(GL_BLEND);
GL11.glMatrixMode(GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1);

GL11.glMatrixMode(GL_MODELVIEW);
GL11.glLoadIdentity();

渲染文本的代码:

GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glDisable(GL11.GL_LIGHTING);

GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
GL11.glClearDepth(1);

GL11.glEnable(GL11.GL_BLEND);

// Problem line
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

GL11.glViewport(0,0, 800, 600);
GL11.glMatrixMode(GL11.GL_MODELVIEW);

GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 800, 600, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);

我认为问题只是 OpenGl 状态错误,但我怎样才能使状态正确?

最佳答案

如果不访问您的整个代码,就很难找出问题,因此我只能发布一些猜测:

  1. 是否清除颜色和深度缓冲区 (glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);)?
  2. 您是否在绘制纹理时启用 GL_TEXTURE_2D,否则禁用它?

我使用相同的混合函数,并且可以很好地绘制图像(这是绘制具有透明度的图像时最常用的混合函数)。

PS:这是我用来绘制任何类型的 2D 内容的唯一设置(不过我使用顶点数组对象和着色器进行渲染):

    glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glEnable(GL_MULTISAMPLE);

glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);

glDisable(GL_DEPTH_TEST);

关于java - 在 lwjgl (Java) 中的文本渲染初始化代码后无法绘制任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21336837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com