/// <summary> /// Sets the attributes. /// </summary> /// <param name="gl">The OpenGL instance.</param> public override void SetAttributes(OpenGL gl) { if (enableDepthTest.HasValue) { gl.EnableIf(OpenGL.GL_DEPTH_TEST, enableDepthTest.Value); } if (depthFunction.HasValue) { gl.DepthFunc(depthFunction.Value); } if (depthClearValue.HasValue) { gl.ClearDepth(depthClearValue.Value); } if (enableDepthWritemask.HasValue) { gl.EnableIf(OpenGL.GL_DEPTH_WRITEMASK, enableDepthWritemask.Value); } }
private void openGLControl1_OpenGLInitialized(object sender, EventArgs e) { SharpGL.OpenGL gl = this.openGLControl1.OpenGL; gl.ClearColor(0.0f, 0.0f, 0.0f, 1.0f); gl.ClearDepth(1.0f); // Setup lightning gl.Enable(OpenGL.GL_LIGHTING); gl.Enable(OpenGL.GL_LIGHT0); gl.Enable(OpenGL.GL_LIGHT1); gl.Enable(OpenGL.GL_COLOR_MATERIAL); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_AMBIENT, new float[] { 0.8f, 0.8f, 0.8f }); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_DIFFUSE, new float[] { 1f, 1f, 1f }); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_POSITION, lightPos0); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_SPOT_CUTOFF, 45); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_SPOT_EXPONENT, 15); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_SPOT_DIRECTION, new float[] { 1f, 1f, 1f }); gl.Material(OpenGL.GL_FRONT_AND_BACK, OpenGL.GL_DIFFUSE, new float[] { 1, 1, 1, 1 }); gl.Material(OpenGL.GL_FRONT_AND_BACK, OpenGL.GL_AMBIENT, new float[] { 1, 1, 1, 1 }); textureImage = new Bitmap("texture.bmp"); gl.Enable(OpenGL.GL_TEXTURE_2D); // Get one texture id, and stick it into the textures array. gl.GenTextures(1, textures); gl.BindTexture(OpenGL.GL_TEXTURE_2D, textures[0]); // Set texture data. gl.TexImage2D(OpenGL.GL_TEXTURE_2D, 0, 3, textureImage.Width, textureImage.Height, 0, OpenGL.GL_BGR, OpenGL.GL_UNSIGNED_BYTE, textureImage.LockBits(new Rectangle(0, 0, textureImage.Width, textureImage.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb).Scan0); // Specify linear filtering. gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MIN_FILTER, OpenGL.GL_LINEAR); gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MAG_FILTER, OpenGL.GL_LINEAR); }
public void Initialize(OpenGL gl) { this.gl = gl; gl.Enable(OpenGL.GL_DEPTH_TEST); gl.DepthFunc(DepthFunction.LessThanOrEqual); gl.ClearDepth(1.0); gl.ClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.Hint(HintTarget.PerspectiveCorrection, HintMode.Nicest); gl.Hint(HintTarget.LineSmooth, HintMode.Nicest); gl.Hint(HintTarget.PointSmooth, HintMode.Nicest); gl.Hint(HintTarget.PolygonSmooth, HintMode.Nicest); gl.Enable(OpenGL.GL_SMOOTH); gl.Enable(OpenGL.GL_LINE_SMOOTH); gl.Enable(OpenGL.GL_POINT_SMOOTH); gl.Enable(OpenGL.GL_MULTISAMPLE); gl.MinSampleShading(4.0f); }
/// <summary> /// Create device and renderbuffer, initialize NV_DX_interop and start rendering. /// </summary> private void StartRendering() { _gl = new OpenGL(); _hwnd = new HwndSource(0, 0, 0, 0, 0, "test", IntPtr.Zero).Handle; _gl.Create(SharpGL.Version.OpenGLVersion.OpenGL2_1, RenderContextType.HiddenWindow, 1, 1, 32, _hwnd); // Set the most basic OpenGL styles. _gl.ShadeModel(OpenGL.GL_SMOOTH); _gl.ClearColor(0.0f, 0.0f, 0.0f, 1.0f); _gl.ClearDepth(1.0f); _gl.Enable(OpenGL.GL_BLEND); _gl.Disable(OpenGL.GL_DEPTH_TEST); _gl.Enable(OpenGL.GL_TEXTURE_2D); _gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_REPLACE); _gl.BlendFunc(OpenGL.GL_SRC_ALPHA, OpenGL.GL_ONE_MINUS_SRC_ALPHA); //_gl.Enable(OpenGL.GL_MULTISAMPLE); //_gl.Enable(OpenGL.GL_MULTISAMPLE_ARB); _gl.Hint(0x8534, OpenGL.GL_FASTEST); ResizeRendering(); // leverage the Rendering event of WPF's composition target to // update the custom D3D scene CompositionTarget.Rendering += OnRenderOpenGL; if (GLInitialize != null) GLInitialize(this, new EventArgs()); }