- 52
- 1
- 1
В общем хочу сделать ентити, который будет представлять из себя тупо спрайт, поворот которого зависит от камеры. Глянул код рендера снежка, файрбол и тп - там какой-то метод, который рендерит Item в самых разных позах - все намешано, миллион утилит... Короче. не помогает. Я древний, с 1.7.10 перескочил на 1.19.4. Работает все не так, как я хочу
На экране нет ровным счетом ничего. Либо я накосячил с поворотом, либо матрицу не так передвинул (хотя я ее и двигал, и нет - все равно), либо с uv сделал что-то не так (а я явно сделал что-то не так, потому что в том же партикле совсем по-другому берется текстура). Хотя даже если я накосячил с uv, должен рендерится хотя бы квадратик, насколько я понимаю.
метод рендера:
@Override
public void render(SoulEntity soulEntity, float p_114486_, float pTicks, PoseStack poseStack, MultiBufferSource bufferSource, int p_114490_) {
Vec3 pos = soulEntity.getPosition(pTicks);
ISoul soul = soulEntity.getSoul();
if(soul == null)
return;
RenderSystem.depthMask(false);
RenderSystem.enableBlend();
RenderSystem.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
RenderSystem.setShaderTexture(0, getTextureLocation(soulEntity));
RenderSystem.setShader(GameRenderer::getPositionColorShader);
Tesselator t = RenderSystem.renderThreadTesselator();
poseStack.scale(0.6f, 0.6f, 0.6f);
poseStack.mulPose(this.entityRenderDispatcher.cameraOrientation());
poseStack.mulPose(Axis.YP.rotationDegrees(180.0F));
poseStack.pushPose();
Color color = soul.getColor();
BufferBuilder bufferBuilder = t.getBuilder();
bufferBuilder.clear();
bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR_TEX);
bufferBuilder.vertex(-1.2f, -1.2f, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 90).uv(1, 1).endVertex();
bufferBuilder.vertex(1.2f, -1.2f, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 90).uv(0, 1).endVertex();
bufferBuilder.vertex(1.2f, 1.2f, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 90).uv(0, 0).endVertex();
bufferBuilder.vertex(-1.2f, 1.2f, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 90).uv(1, 0).endVertex();
bufferBuilder.vertex(0f - 0.6, 0.0f - 0.6, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 100).uv(1, 1).endVertex();
bufferBuilder.vertex(1f - 0.4, 0.0f - 0.6, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 100).uv(0, 1).endVertex();
bufferBuilder.vertex(1f - 0.4, 1.0f - 0.4, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 100).uv(0, 0).endVertex();
bufferBuilder.vertex(0f - 0.6, 1.0f - 0.4, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 100).uv(1, 0).endVertex();
bufferBuilder.vertex((0f - 0.5) + 0.13, (0.0f - 0.5) + 0.13, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 120).uv(1, 1).endVertex();
bufferBuilder.vertex(1f - 0.5 - 0.13, (0.0f - 0.5) + 0.13, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 120).uv(0, 1).endVertex();
bufferBuilder.vertex(1f - 0.5 - 0.13, 1.0f - 0.5 - 0.13, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 120).uv(0, 0).endVertex();
bufferBuilder.vertex((0f - 0.5) + 0.13, 1.0f - 0.5 - 0.13, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 120).uv(1, 0).endVertex();
bufferBuilder.vertex((0f - 0.5) + 0.26, (0.0f - 0.5) + 0.26, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 130).uv(1, 1).endVertex();
bufferBuilder.vertex(1f - 0.5 - 0.26, (0.0f - 0.5) + 0.26, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 130).uv(0, 1).endVertex();
bufferBuilder.vertex(1f - 0.5 - 0.26, 1.0f - 0.5 - 0.26, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 130).uv(0, 0).endVertex();
bufferBuilder.vertex((0f - 0.5) + 0.26, 1.0f - 0.5 - 0.26, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 130).uv(1, 0).endVertex();
bufferBuilder.vertex((0f - 0.5) + 0.4, (0.0f - 0.5) + 0.4, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 140).uv(1, 1).endVertex();
bufferBuilder.vertex(1f - 0.5 - 0.4, (0.0f - 0.5) + 0.4, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 140).uv(0, 1).endVertex();
bufferBuilder.vertex(1f - 0.5 - 0.4, 1.0f - 0.5 - 0.4, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 140).uv(0, 0).endVertex();
bufferBuilder.vertex((0f - 0.5) + 0.4, 1.0f - 0.5 - 0.4, 0.0).color(color.getRed(), color.getBlue(), color.getGreen(), 140).uv(1, 0).endVertex();
t.end();
RenderSystem.disableBlend();
RenderSystem.depthMask(true);
poseStack.popPose();
super.render(soulEntity, p_114486_, pTicks, poseStack, bufferSource, p_114490_);
}
На экране нет ровным счетом ничего. Либо я накосячил с поворотом, либо матрицу не так передвинул (хотя я ее и двигал, и нет - все равно), либо с uv сделал что-то не так (а я явно сделал что-то не так, потому что в том же партикле совсем по-другому берется текстура). Хотя даже если я накосячил с uv, должен рендерится хотя бы квадратик, насколько я понимаю.