Java LWJGL/OpenGL-Alpha无法使用GL_四边形条带或GL_线条条带
我想在以后的工作中使用Alpha/混合模式(主要是事务和可能的图像混合) 嗯,我不能让它工作使用LWJGL(GL1.1),我已经尝试了其他混合模式,但没有工作,也没有改变背景或类似的东西 截图:Java LWJGL/OpenGL-Alpha无法使用GL_四边形条带或GL_线条条带,java,opengl,lwjgl,alpha,blend,Java,Opengl,Lwjgl,Alpha,Blend,我想在以后的工作中使用Alpha/混合模式(主要是事务和可能的图像混合) 嗯,我不能让它工作使用LWJGL(GL1.1),我已经尝试了其他混合模式,但没有工作,也没有改变背景或类似的东西 截图: -始终启用GL_混合,一切都是透明的 -四元和文本上启用了GL_混合,我可以看到禁用GL_混合的行 我imgur com/nkda41v png-GL_BLEND在除了文本之外的所有内容上都被禁用->我需要一些声誉来发布2个以上的链接,对此表示抱歉,但我相信这张图片很重要,所以我还是会发布它。用圆点填就
Font-consolas=新字体(“consolas”,Font.PLAIN,13);
字体=新的TrueTypeFont(控制台、抗锯齿字体);
}
私有void updateMatrix(){
glMatrixMode(GL_投影);
glLoadIdentity();
glOrtho(0,默认宽度,默认高度,0,1,-1);
//glScaled((双精度)默认宽度/(双精度)显示.getWidth(),(双精度)默认高度/(双精度)显示.getHeight(),0);
glViewport(0,0,Display.getWidth(),Display.getHeight());
glMatrixMode(GLU模型视图);
}
@凌驾
公开募捐{
init();
Main=Main.getMain();
而(!Display.isCloseRequested()){
currentGraphicsStick++;
{
glClear(GLU颜色缓冲位);
glClearColor(0f、0f、0f、1f);
if(Display.wasResized())updateMatrix();
if(vsyncMode==1)Display.setVSyncEnabled(true);
else if(vsyncMode==2)Display.setVSyncEnabled(false);
if(Display.isActive()){
glPushMatrix();
试试{//Draw
float alpha=(float)Math.cos(Math.toRadians(currentGraphicsStick%90));
System.out.println(“Alpha:+Alpha”);
glBegin(GL_线_带);
{
float sin=(float)Math.abs(Math.sin(Math.toRadians(currentGraphicsStick%360));
新颜色(0.7f,0.7f,0.7f,alpha);
glVertex2f(默认宽度*0.03f,默认高度*0.05f);
glVertex2f(默认宽度*0.93f*sin,默认高度*0.95f*sin);
}
格伦德();
glBegin(GLU四条带);
{
新颜色(0.5f,0.5f,0.5f,alpha).bind();
glVertex2i(0,0);
glVertex2i(0,默认高度);
glVertex2i(默认宽度,0);
glVertex2i(默认宽度、默认高度);
}
格伦德();
String[]split=main.getGameLoopThread().getDebugString().split(“\n”);
对于(int i=0;i
我已经试过了:
- 在一侧,它从(0,0)移动到(宽度-7%,高度-5%)
- 另一方面,它在上静止不动(宽度+3%,高度+5%)
- 矩形会使其褪色(最初的想法是使用与背景相同的颜色,但在我的测试中没有,因为我想看到矩形)
像我 ` private void init() { try { Display.setDisplayMode(new DisplayMode(DEFAULT_WIDTH, DEFAULT_HEIGHT)); Display.setResizable(true); Display.setVSyncEnabled(true); Display.setTitle(DEFAULT_TITLE + " v" + VERSION); Display.create(); updateMatrix(); } catch(LWJGLException e) { e.printStackTrace(); } Keyboard.enableRepeatEvents(true); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Font consolas = new Font("consolas", Font.PLAIN, 13);
font = new TrueTypeFont(consolas, antiAliasedFont);
}
private void updateMatrix() {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, DEFAULT_WIDTH, DEFAULT_HEIGHT, 0, 1, -1);
//glScaled((double) DEFAULT_WIDTH / (double) Display.getWidth(), (double) DEFAULT_HEIGHT / (double) Display.getHeight(), 0);
glViewport(0, 0, Display.getWidth(), Display.getHeight());
glMatrixMode(GL_MODELVIEW);
}
@Override
public void run() {
init();
Main main = Main.getMain();
while(!Display.isCloseRequested()) {
currentGraphicsTick++;
{
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(0f, 0f, 0f, 1f);
if(Display.wasResized()) updateMatrix();
if(vsyncMode == 1) Display.setVSyncEnabled(true);
else if(vsyncMode == 2) Display.setVSyncEnabled(false);
if(Display.isActive()) {
glPushMatrix();
try { // Draw
float alpha = (float) Math.cos(Math.toRadians(currentGraphicsTick % 90));
System.out.println("Alpha: " + alpha);
glBegin(GL_LINE_STRIP);
{
float sin = (float) Math.abs(Math.sin(Math.toRadians(currentGraphicsTick % 360)));
new Color(0.7f, 0.7f, 0.7f, alpha).bind();
glVertex2f(DEFAULT_WIDTH * 0.03f, DEFAULT_HEIGHT * 0.05f);
glVertex2f(DEFAULT_WIDTH * 0.93f * sin, DEFAULT_HEIGHT * 0.95f * sin);
}
glEnd();
glBegin(GL_QUAD_STRIP);
{
new Color(0.5f, 0.5f, 0.5f, alpha).bind();
glVertex2i(0, 0);
glVertex2i(0, DEFAULT_HEIGHT);
glVertex2i(DEFAULT_WIDTH, 0);
glVertex2i(DEFAULT_WIDTH, DEFAULT_HEIGHT);
}
glEnd();
String[] split = main.getGameLoopThread().getDebugString().split("\n");
for(int i = 0; i < split.length; i++) {
font.drawString(1, 1 + (i * font.getLineHeight()), split[i], Color.white);
}
} catch(Throwable throwable) {
throwable.printStackTrace();
}
glPopMatrix();
}
Display.update();
Display.sync(TARGET_FPS);
}
}
Display.destroy();
closeRequested = true;
}