- 1,417
- 44
- 594
Доброго времени суток, подскажите, пожалуйста, решение данной проблемы.
Проблема заключается в том, что при рендере FBO получаемая текстура будет цвета неба или белая, если выключить текстуру.
Код:
Примеры:
Пример1
Пример2
Проблема заключается в том, что при рендере FBO получаемая текстура будет цвета неба или белая, если выключить текстуру.
Код:
Java:
@SideOnly(Side.CLIENT)
public void initFramebuffer()
{
circuitFBO = new Framebuffer(64, 64, false);
circuitFBO.bindFramebuffer(false);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glViewport(0, 0, 64, 64);
GL11.glOrtho(0, 64, 64, 0, -1, 1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glColor3d(255, 0, 0);
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2i(0, 0);
GL11.glVertex2i(0, 64);
GL11.glVertex2i(64, 64);
GL11.glVertex2i(64, 0);
GL11.glEnd();
GL11.glEnable(GL11.GL_DEPTH_TEST);
model.renderAll();
circuitFBO.unbindFramebuffer();
}
Java:
@Override
public void renderItem(ItemRenderType type, ItemStack is, Object... data) {
Tessellator tes = Tessellator.instance;
GL11.glPushMatrix();
GL11.glTranslatef(0.5F, 0.0F, 0.5F);
GL11.glScaled(3, 3, 3);
Minecraft.getMinecraft().renderEngine.bindTexture(texture);
model.renderAll();
glDisable(GL_LIGHTING);
GL11.glDisable(GL11.GL_TEXTURE_2D); // С данной строчкой получаем Пример1 без нее Пример2
if(circuitFBO == null) initFramebuffer();
//initFramebuffer();
circuitFBO.bindFramebufferTexture();
tes.startDrawingQuads();
tes.addVertexWithUV(0, 0, -0.7, 0, 0);
tes.addVertexWithUV(0, 1, -0.7, 0, 1);
tes.addVertexWithUV(1, 1, -0.7, 1, 1);
tes.addVertexWithUV(1, 0, -0.7, 1, 0);
tes.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D); // С данной строчкой получаем Пример1 без нее Пример2
glEnable(GL_LIGHTING);
GL11.glPopMatrix();
}
Пример1
Пример2