gpt4 book ai didi

java - OpenGL 只渲染纹理,而不是线条(可能很简单)

转载 作者:行者123 更新时间:2023-11-29 05:33:07 24 4
gpt4 key购买 nike

我已经实现了我的“引擎”,它曾经很好地画线。但是现在,在我实现了简单的 sprite 之后,线条不再渲染(但 sprite 可以)。当我将 glEnable(GL_TEXTURE_2D) 放入我的初始化代码中时,一切都出错了。

glClearColor(0.0f,0.0f,0.0f,0.0f);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_TEXTURE_2D);
glEnable( GL_BLEND );
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width, 0, height, 1, -1);

我的线条是这样画的:

    glLineWidth(lineWidth);
glColor4f(color.getR(), color.getG(), color.getB(), color.getA());
if(transformToViewport) {
Point a = vp.transformCoords(begin);
Point b = vp.transformCoords(end);
glVertex3f(a.coords[0], a.coords[1], 0);
glVertex3f(b.coords[0], b.coords[1], 0);
}
else {
glVertex3f(begin.coords[0], begin.coords[1], 0);
glVertex3f(end.coords[0], end.coords[1], 0);
}

和 Sprite :

    float transformedH = vp.transformLength(height);
float transformedW = vp.transformLength(width);
Point transformedCenter = vp.transformCoords(center);
glBindTexture(GL_TEXTURE_2D, texture.getTextureID());

glTexCoord2f(0f, 1f);
glVertex2f(transformedCenter.coords[0] - transformedW / 2, transformedCenter.coords[1] - transformedH / 2);

glTexCoord2f(1f, 1f);
glVertex2f(transformedCenter.coords[0] + transformedW / 2, transformedCenter.coords[1] - transformedH / 2);

glTexCoord2f(0f, 0f);
glVertex2f(transformedCenter.coords[0] - transformedW / 2, transformedCenter.coords[1] + transformedH / 2);


glTexCoord2f(1f, 1f);
glVertex2f(transformedCenter.coords[0] + transformedW / 2, transformedCenter.coords[1] - transformedH / 2);

glTexCoord2f(1f, 0f);
glVertex2f(transformedCenter.coords[0] + transformedW / 2, transformedCenter.coords[1] + transformedH / 2);

glTexCoord2f(0f, 0f);
glVertex2f(transformedCenter.coords[0] - transformedW / 2, transformedCenter.coords[1] + transformedH / 2);


glBindTexture(GL_TEXTURE_2D, 0);

最佳答案

在绘制纹理之前(例如在方法中)使用 glEnable(GL_TEXTURE_2D);,然后在之后立即使用 glDisable(GL_TEXTURE_2D);

对于初学者(有时对于更复杂的系统),最好将 glEnableglDisable 调用配对在一起,以防止不必要的功能被用于事物(在某些情况下会导致问题,例如)您不需要它们。

关于java - OpenGL 只渲染纹理,而不是线条(可能很简单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20429127/

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