Я работаю на шкатулке прокрутки в minecraft.OpenGL 2D Stencil
Свиток коробка есть одна проблема, некоторые элементы управления будут оказывать вне коробки, поэтому я решил посмотреть, если это возможно, чтобы предотвратить это. Я нашел трафареты, но это не сработает, может, я сделал что-то не так?
GL11.glEnable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_STENCIL_TEST);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glClearStencil(0);
GL11.glClear(GL11.GL_STENCIL_BUFFER_BIT);
GL11.glStencilFunc(GL11.GL_ALWAYS, 1, 1);
GL11.glStencilOp(GL11.GL_KEEP, GL11.GL_KEEP, GL11.GL_REPLACE);
и это линия рендеринга фон прокрутки окна:
Vector4d color = new Vector4d(140, 140, 140, 255);
RenderHelper2D.drawGradientRect(1, 1, this.width-1, this.height-1, color, color);
http://i.imgur.com/Ycg7AKo.png (Это черный указано серый рисунок)
GL11.glBlendFunc(GL11.GL_ONE_MINUS_DST_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glStencilFunc(GL11.GL_EQUAL, 1, 1);
GL11.glStencilOp(GL11.GL_KEEP, GL11.GL_KEEP, GL11.GL_KEEP);
оказывать все цели внутри scroll- (кнопки). Который не должен отображаться вне коробки.
gui.drawForeground(renderer);
и сбросить все,
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColorMask(true, true, true, true);
GL11.glDisable(GL11.GL_STENCIL_TEST);
Спасибо. Это работает, очень хороший и простой ответ. – CreativeMD
Это не должен быть квадрат. Область ножниц представляет собой прямоугольник, где ширина и высота могут быть разными. –
Упс, вы абсолютно правы Reto. Я имел в виду прямоугольник! –