rename vbo containers
This commit is contained in:
+3
-2
@@ -53,7 +53,8 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.distanthorizons.core.logging.f3.F3Screen;
|
||||
import com.seibel.distanthorizons.core.render.renderer.RenderParams;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.GenericRenderObjectFactory;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.InstancedVboContainer;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.IGenericObjectVertexBufferContainer;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.NativeGlGenericObjectVertexContainer;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.RenderableBoxGroup;
|
||||
import com.seibel.distanthorizons.core.util.LodUtil;
|
||||
import com.seibel.distanthorizons.core.util.math.Mat4f;
|
||||
@@ -397,7 +398,7 @@ public class McGenericObjectRenderer implements IMcGenericRenderer
|
||||
boxGroup.tryUpdateInstancedDataAsync();
|
||||
|
||||
// skip groups that haven't been uploaded yet
|
||||
if (boxGroup.instancedVbos.getState() != InstancedVboContainer.EState.RENDER)
|
||||
if (boxGroup.instancedVbos.getState() != IGenericObjectVertexBufferContainer.EState.RENDER)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
+4
-4
@@ -11,7 +11,7 @@ import com.seibel.distanthorizons.core.logging.DhLogger;
|
||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.distanthorizons.core.render.glObject.GLEnums;
|
||||
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.IInstancedVboContainer;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.IGenericObjectVertexBufferContainer;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.RenderableBoxGroup;
|
||||
import com.seibel.distanthorizons.core.util.ColorUtil;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftGLWrapper;
|
||||
@@ -28,7 +28,7 @@ import java.util.function.Supplier;
|
||||
*
|
||||
* @see RenderableBoxGroup
|
||||
*/
|
||||
public class McInstancedVboContainer implements IInstancedVboContainer
|
||||
public class McInstancedVboContainer implements IGenericObjectVertexBufferContainer
|
||||
{
|
||||
private static final DhLogger LOGGER = new DhLoggerBuilder().build();
|
||||
|
||||
@@ -170,9 +170,9 @@ public class McInstancedVboContainer implements IInstancedVboContainer
|
||||
|
||||
private EState state = EState.NEW;
|
||||
@Override
|
||||
public IInstancedVboContainer.EState getState() { return this.state; }
|
||||
public IGenericObjectVertexBufferContainer.EState getState() { return this.state; }
|
||||
@Override
|
||||
public void setState(IInstancedVboContainer.EState state) { this.state = state; }
|
||||
public void setState(IGenericObjectVertexBufferContainer.EState state) { this.state = state; }
|
||||
|
||||
|
||||
|
||||
|
||||
+32
-15
@@ -12,6 +12,12 @@ import java.util.function.Supplier;
|
||||
|
||||
public class VertexBufferWrapper implements IVertexBufferWrapper
|
||||
{
|
||||
private static final GpuDevice GPU_DEVICE = RenderSystem.getDevice();
|
||||
private static final CommandEncoder COMMAND_ENCODER = GPU_DEVICE.createCommandEncoder();
|
||||
|
||||
|
||||
public final String name;
|
||||
public String getName() { return this.name; }
|
||||
|
||||
public GpuBuffer vboGpuBuffer = null;
|
||||
public int vertexCount = -1;
|
||||
@@ -19,13 +25,20 @@ public class VertexBufferWrapper implements IVertexBufferWrapper
|
||||
public boolean uploaded = false;
|
||||
|
||||
|
||||
@Override
|
||||
public int getVertexCount() { return this.vertexCount ;}
|
||||
|
||||
//=============//
|
||||
// constructor //
|
||||
//=============//
|
||||
//region
|
||||
|
||||
public VertexBufferWrapper(String name) { this.name = name; }
|
||||
|
||||
//endregion
|
||||
|
||||
|
||||
|
||||
//========//
|
||||
// render //
|
||||
// upload //
|
||||
//========//
|
||||
//region
|
||||
|
||||
@@ -37,20 +50,24 @@ public class VertexBufferWrapper implements IVertexBufferWrapper
|
||||
this.uploaded = true;
|
||||
|
||||
|
||||
GpuDevice gpuDevice = RenderSystem.getDevice();
|
||||
CommandEncoder commandEncoder = gpuDevice.createCommandEncoder();
|
||||
|
||||
Supplier<String> labelSupplier = () -> "distantHorizons:McLodRenderer";
|
||||
int usage = 8 | 32; // is this just using OpenGL VBO flags?, if so I can't find it, supposedly GlDevice on Mojang's side
|
||||
int usage = GpuBuffer.USAGE_COPY_DST
|
||||
| GpuBuffer.USAGE_VERTEX;
|
||||
int byteSize = (buffer.limit() - buffer.position());
|
||||
this.vboGpuBuffer = gpuDevice.createBuffer(labelSupplier, usage, byteSize);
|
||||
this.vboGpuBuffer = GPU_DEVICE.createBuffer(this::getName, usage, byteSize);
|
||||
|
||||
{
|
||||
GpuBufferSlice bufferSlice = new GpuBufferSlice(this.vboGpuBuffer, /*offset*/0, byteSize);
|
||||
commandEncoder.writeToBuffer(bufferSlice, buffer);
|
||||
}
|
||||
GpuBufferSlice bufferSlice = new GpuBufferSlice(this.vboGpuBuffer, /*offset*/0, byteSize);
|
||||
COMMAND_ENCODER.writeToBuffer(bufferSlice, buffer);
|
||||
}
|
||||
|
||||
//endregion
|
||||
|
||||
|
||||
|
||||
//================//
|
||||
// base overrides //
|
||||
//================//
|
||||
//region
|
||||
|
||||
@Override
|
||||
public void close()
|
||||
{
|
||||
@@ -60,8 +77,8 @@ public class VertexBufferWrapper implements IVertexBufferWrapper
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//endregion
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -36,7 +36,8 @@ import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment;
|
||||
import com.seibel.distanthorizons.core.level.IDhLevel;
|
||||
import com.seibel.distanthorizons.core.level.IDhServerLevel;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.IInstancedVboContainer;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.IGenericObjectVertexBufferContainer;
|
||||
import com.seibel.distanthorizons.core.render.renderer.generic.IGenericObjectVertexBufferContainer;
|
||||
import com.seibel.distanthorizons.core.util.LodUtil;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.IWrapperFactory;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper;
|
||||
@@ -363,12 +364,12 @@ public class WrapperFactory implements IWrapperFactory
|
||||
|
||||
|
||||
@Override
|
||||
public IVertexBufferWrapper createVboWrapper() { return new VertexBufferWrapper(); }
|
||||
public IVertexBufferWrapper createVboWrapper(String name) { return new VertexBufferWrapper(name); }
|
||||
@Override
|
||||
public ILodContainerUniformBufferWrapper createLodContainerUniformWrapper() { return new LodContainerUniformBufferWrapper(); }
|
||||
|
||||
@Override
|
||||
public IInstancedVboContainer createInstancedVboContainer() { return new McInstancedVboContainer(); }
|
||||
public IGenericObjectVertexBufferContainer createInstancedVboContainer() { return new McInstancedVboContainer(); }
|
||||
|
||||
@Override
|
||||
public IMcGenericRenderer createGenericRenderer() { return new McGenericObjectRenderer(); }
|
||||
|
||||
Reference in New Issue
Block a user