jme-Vulkan
jMonkeyEngine Hub
April 13, 2026
OpenGL has its own unique features, and some functionalities that only exist in OpenGL are not natively available in Vulkan.
I may have used alternative approaches to simulate them, but that may not be the optimal solution.
This likely requires further experimentation and discussion to finalize the best implementation.
// --- 空实现或未支持的方法 ---
@Override public void invalidateState() {}
@Override public void setDepthRange(float start, float end) {}
@Override public void postFrame() {}
@Override public void deleteShader(Shader shader) {}
@Override public void deleteShaderSource(Shader.ShaderSource source) {}
@Override public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyDepth) {}
@Override public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyColor, boolean copyDepth) {}
@Override public void setMainFrameBufferOverride(FrameBuffer fb) {}
@Override public void readFrameBuffer(FrameBuffer fb, ByteBuffer byteBuf) {}
@Override public void readFrameBufferWithFormat(FrameBuffer fb, ByteBuffer byteBuf, Image.Format format) {}
@Override public void deleteFrameBuffer(FrameBuffer fb) {}
@Override public void updateBufferData(BufferObject bo) {}
@Override public void deleteBuffer(BufferObject bo) {}
@Override public void popDebugGroup() { Renderer.super.popDebugGroup(); }
@Override public void pushDebugGroup(String name) { Renderer.super.pushDebugGroup(name); }
@Override public void resetGLObjects() {}
@Override public void setDefaultAnisotropicFilter(int level) {}
@Override public void setAlphaToCoverage(boolean value) {}
@Override public void setMainFrameBufferSrgb(boolean srgb) {}
@Override public void setLinearizeSrgbImages(boolean linearize) {}
@Override public int[] generateProfilingTasks(int numTasks) { return new int[0]; }
@Override public void startProfiling(int taskId) {}
@Override public void stopProfiling() {}
@Override public long getProfilingTime(int taskId) { return 0; }
@Override public boolean isTaskResultAvailable(int taskId) { return false; }
@Override public boolean getAlphaToCoverage() { return false; }
@Override public int getDefaultAnisotropicFilter() { return 0; }
@Override public float getMaxLineWidth() { return 1.0f; }
@Override public boolean isLinearizeSrgbImages() { return false; }
@Override public boolean isMainFrameBufferSrgb() { return false; }
For instance, some of these aspects need to be improved, while others need to be abandoned. But all of this will be discussed later.
Discussion in the ATmosphere