luca-piccioni / OpenGL.Net

Modern OpenGL bindings for C#.
MIT License
579 stars 109 forks source link

DEPTH TEST don't work #31

Closed gtumino closed 7 years ago

gtumino commented 7 years ago

Hi Luca,

DEPTH TEST don't work. If you use a cube on your HelloTriangle example you can test this issue.

private void RenderControl_ContextCreated(object sender, GlControlEventArgs e){ ..... Gl.ClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background Gl.ClearDepth(1.0f);
Gl.Enable(EnableCap.DepthTest); // Enables Depth Testing Gl.DepthFunc(DepthFunction.Lequal); // The Type Of Depth Testing To Do Gl.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest); ....

}

//CUBE private static readonly float[] _ArrayPosition = new float[] { -1.0f,-1.0f,-1.0f, // triangle 1 : begin -1.0f,-1.0f, 1.0f, -1.0f, 1.0f, 1.0f, // triangle 1 : end 1.0f, 1.0f,-1.0f, // triangle 2 : begin -1.0f,-1.0f,-1.0f, -1.0f, 1.0f,-1.0f, // triangle 2 : end 1.0f,-1.0f, 1.0f, -1.0f,-1.0f,-1.0f, 1.0f,-1.0f,-1.0f, 1.0f, 1.0f,-1.0f, 1.0f,-1.0f,-1.0f, -1.0f,-1.0f,-1.0f, -1.0f,-1.0f,-1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f,-1.0f, 1.0f,-1.0f, 1.0f, -1.0f,-1.0f, 1.0f, -1.0f,-1.0f,-1.0f, -1.0f, 1.0f, 1.0f, -1.0f,-1.0f, 1.0f, 1.0f,-1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,-1.0f,-1.0f, 1.0f, 1.0f,-1.0f, 1.0f,-1.0f,-1.0f, 1.0f, 1.0f, 1.0f, 1.0f,-1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,-1.0f, -1.0f, 1.0f,-1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f,-1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f,-1.0f, 1.0f };

    /// <summary>
    /// Vertex color array.
    /// </summary>
    private static readonly float[] _ArrayColor = new float[] {

0.583f,  0.771f,  0.014f,
0.609f,  0.115f,  0.436f,
0.327f,  0.483f,  0.844f,
0.822f,  0.569f,  0.201f,
0.435f,  0.602f,  0.223f,
0.310f,  0.747f,  0.185f,
0.597f,  0.770f,  0.761f,
0.559f,  0.436f,  0.730f,
0.359f,  0.583f,  0.152f,
0.483f,  0.596f,  0.789f,
0.559f,  0.861f,  0.639f,
0.195f,  0.548f,  0.859f,
0.014f,  0.184f,  0.576f,
0.771f,  0.328f,  0.970f,
0.406f,  0.615f,  0.116f,
0.676f,  0.977f,  0.133f,
0.971f,  0.572f,  0.833f,
0.140f,  0.616f,  0.489f,
0.997f,  0.513f,  0.064f,
0.945f,  0.719f,  0.592f,
0.543f,  0.021f,  0.978f,
0.279f,  0.317f,  0.505f,
0.167f,  0.620f,  0.077f,
0.347f,  0.857f,  0.137f,
0.055f,  0.953f,  0.042f,
0.714f,  0.505f,  0.345f,
0.783f,  0.290f,  0.734f,
0.722f,  0.645f,  0.174f,
0.302f,  0.455f,  0.848f,
0.225f,  0.587f,  0.040f,
0.517f,  0.713f,  0.338f,
0.053f,  0.959f,  0.120f,
0.393f,  0.621f,  0.362f,
0.673f,  0.211f,  0.457f,
0.820f,  0.883f,  0.371f,
0.982f,  0.099f,  0.879f

};
luca-piccioni commented 7 years ago

Personally I've never got a problem on the depth setup. Are you sure that your selected pixel format currently allocate depth buffer?

Currently I'm able to run another example with depth testing enabled with thousands of cubes and complexes meshes (50K polygons) without any issue.

gtumino commented 7 years ago

I've tried different solution but issue remain.on c++ program is ok.

Il 05 gen 2017 9:17 PM, "Luca Piccioni" notifications@github.com ha scritto:

Shouldn't depth value cleared to 0?

Il gio 5 gen 2017, 21:00 gtumino notifications@github.com ha scritto:

Hi Luca,

DEPTH TEST don't work. If you use a cube on your HelloTriangle example you can test this issue.

private void RenderControl_ContextCreated(object sender, GlControlEventArgs e){ ..... Gl.ClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background Gl.ClearDepth(1.0f); Gl.Enable(EnableCap.DepthTest); // Enables Depth Testing Gl.DepthFunc(DepthFunction.Lequal); // The Type Of Depth Testing To Do Gl.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest); ....

}

//CUBE private static readonly float[] _ArrayPosition = new float[] { -1.0f,-1.0f,-1.0f, // triangle 1 : begin -1.0f,-1.0f, 1.0f, -1.0f, 1.0f, 1.0f, // triangle 1 : end 1.0f, 1.0f,-1.0f, // triangle 2 : begin -1.0f,-1.0f,-1.0f, -1.0f, 1.0f,-1.0f, // triangle 2 : end 1.0f,-1.0f, 1.0f, -1.0f,-1.0f,-1.0f, 1.0f,-1.0f,-1.0f, 1.0f, 1.0f,-1.0f, 1.0f,-1.0f,-1.0f, -1.0f,-1.0f,-1.0f, -1.0f,-1.0f,-1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f,-1.0f, 1.0f,-1.0f, 1.0f, -1.0f,-1.0f, 1.0f, -1.0f,-1.0f,-1.0f, -1.0f, 1.0f, 1.0f, -1.0f,-1.0f, 1.0f, 1.0f,-1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,-1.0f,-1.0f, 1.0f, 1.0f,-1.0f, 1.0f,-1.0f,-1.0f, 1.0f, 1.0f, 1.0f, 1.0f,-1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,-1.0f, -1.0f, 1.0f,-1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f,-1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f,-1.0f, 1.0f };

///

/// Vertex color array. /// private static readonly float[] _ArrayColor = new float[] {

0.583f, 0.771f, 0.014f, 0.609f, 0.115f, 0.436f, 0.327f, 0.483f, 0.844f, 0.822f, 0.569f, 0.201f, 0.435f, 0.602f, 0.223f, 0.310f, 0.747f, 0.185f, 0.597f, 0.770f, 0.761f, 0.559f, 0.436f, 0.730f, 0.359f, 0.583f, 0.152f, 0.483f, 0.596f, 0.789f, 0.559f, 0.861f, 0.639f, 0.195f, 0.548f, 0.859f, 0.014f, 0.184f, 0.576f, 0.771f, 0.328f, 0.970f, 0.406f, 0.615f, 0.116f, 0.676f, 0.977f, 0.133f, 0.971f, 0.572f, 0.833f, 0.140f, 0.616f, 0.489f, 0.997f, 0.513f, 0.064f, 0.945f, 0.719f, 0.592f, 0.543f, 0.021f, 0.978f, 0.279f, 0.317f, 0.505f, 0.167f, 0.620f, 0.077f, 0.347f, 0.857f, 0.137f, 0.055f, 0.953f, 0.042f, 0.714f, 0.505f, 0.345f, 0.783f, 0.290f, 0.734f, 0.722f, 0.645f, 0.174f, 0.302f, 0.455f, 0.848f, 0.225f, 0.587f, 0.040f, 0.517f, 0.713f, 0.338f, 0.053f, 0.959f, 0.120f, 0.393f, 0.621f, 0.362f, 0.673f, 0.211f, 0.457f, 0.820f, 0.883f, 0.371f, 0.982f, 0.099f, 0.879f

};

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/luca-piccioni/OpenGL.Net/issues/31, or mute the thread https://github.com/notifications/unsubscribe-auth/ AEe6CbZPIsytspYKdwJrWeUBE0bmvrQ9ks5rPUvzgaJpZM4LcEaf .

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/luca-piccioni/OpenGL.Net/issues/31#issuecomment-270746035, or mute the thread https://github.com/notifications/unsubscribe-auth/AXrKVYk7VSwRkZA7alS72HBaRKncLr27ks5rPU_lgaJpZM4LcEaf .

gtumino commented 7 years ago

Usually with glEnable(depth_test) works, but not with your framework. What do you mean 'selected pixel format'?

Il 05 gen 2017 9:47 PM, "Luca Piccioni" notifications@github.com ha scritto:

Personally I've never got a problem on the depth setup. Are you sure that your selected pixel format currently allocate depth buffer?

Currently I'm able to run another example with depth testing enabled with thousands of cubes and complexes meshes (50K polygons) without any issue.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/luca-piccioni/OpenGL.Net/issues/31#issuecomment-270752902, or mute the thread https://github.com/notifications/unsubscribe-auth/AXrKVX4ltpY5EPtxKlCoJAL60Eg2kc4Qks5rPVbKgaJpZM4LcEaf .

luca-piccioni commented 7 years ago

What value do you have for the property DepthBitson your GlControlinstance? The properties under Framebuffer section select the pixel format (i.e. the color buffers, depth buffer, stencil buffer; along with their precision). The control select the pixel format which allocate the minimum required buffers, so if the DepthBits property is set to 0, it means that you're requesting a pixel format without depth buffer, hence my question.

luca-piccioni commented 7 years ago

Additionally, the GlControl in design mode (within Visual Studio) displays the currently selected pixel format, updated when the properties of the GlControl changes.

gtumino commented 7 years ago

[image: Immagine incorporata 1]

Ok yes is 0. Shoud it set manually?

2017-01-05 22:01 GMT+01:00 Luca Piccioni notifications@github.com:

What value do you have for the property DepthBitson your GlControlinstance? The properties under Framebuffer section select the pixel format (i.e. the color buffers, depth buffer, pixel buffer; along with their precision). The control select the pixel format with allocate the minimum required buffers, so if the DepthBits property is set to 0, it means that you're requesting a pixel format without depth buffer, hence my question.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/luca-piccioni/OpenGL.Net/issues/31#issuecomment-270756302, or mute the thread https://github.com/notifications/unsubscribe-auth/AXrKVaU5qmF2XgknsYvD7be1IfshwAjUks5rPVoNgaJpZM4LcEaf .

luca-piccioni commented 7 years ago

Yes. 24 bits is the most common value.

gtumino commented 7 years ago

Now its ok, thanks :)

Il 05 gen 2017 10:46 PM, "Luca Piccioni" notifications@github.com ha scritto:

Yes. 24 bits is the most common value.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/luca-piccioni/OpenGL.Net/issues/31#issuecomment-270766799, or mute the thread https://github.com/notifications/unsubscribe-auth/AXrKVchzND-3fKKDJWVtlTjFFetRtryXks5rPWSugaJpZM4LcEaf .

Vercidium commented 6 years ago

I don't use a GlControl instance as I am only using OpenGL.Net for the OpenGL call bindings. I am unable to make depth testing work with Gl.Enable(EnableCap.DepthTest), and can't find a property for depth bits anywhere. How can I enable depth testing?

luca-piccioni commented 6 years ago

@vercidium How do you setup window/framebuffer? Do you use any abstraction? Depth is setup at window creation (when setting the pixel format)