/// <summary> /// Initialises the scene. /// </summary> /// <param name="gl">The OpenGL instance.</param> /// <param name="width">The width of the screen.</param> /// <param name="height">The height of the screen.</param> public void Initialise(OpenGL gl, float width, float height) { // Set a blue clear colour. gl.ClearColor(0.4f, 0.6f, 0.9f, 0.0f); // Create the shader program. var vertexShaderSource = ManifestResourceLoader.LoadTextFile("Shader.vert"); var fragmentShaderSource = ManifestResourceLoader.LoadTextFile("Shader.frag"); shaderProgram = new ShaderProgram(); shaderProgram.Create(gl, vertexShaderSource, fragmentShaderSource, null); shaderProgram.BindAttributeLocation(gl, attributeIndexPosition, "in_Position"); shaderProgram.BindAttributeLocation(gl, attributeIndexColour, "in_Color"); shaderProgram.AssertValid(gl); // Create a perspective projection matrix. const float rads = (60.0f / 360.0f) * (float)Math.PI * 2.0f; projectionMatrix = glm.perspective(rads, width / height, 0.1f, 100.0f); // Create a view matrix to move us back a bit. viewMatrix = glm.translate(new mat4(1.0f), new vec3(0.0f, 0.0f, -5.0f)); // Create a model matrix to make the model a little bigger. modelMatrix = glm.scale(new mat4(1.0f), new vec3(2.5f)); // Now create the geometry for the square. CreateVerticesForSquare(gl); }
private void openGLControl1_OpenGLInitialized(object sender, EventArgs e) { OpenGL gl = this.openGLControl1.OpenGL; //Сохраним контекст для отрисовки Camera.Init(); //Проинициализируем камеру стандартными настройками Sun.Init(); //Проинициализируем Солнце стандартными настройками hMap = new HeightMap("Map.png"); //Получим карту высот из файла, сожержащего шум Перлина /* * Настроим свет * */ gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_AMBIENT, Sun.Ambient); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_DIFFUSE, Sun.Diffuse); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_SPECULAR, Sun.Specular); gl.LightModel(OpenGL.GL_LIGHT_MODEL_TWO_SIDE, OpenGL.GL_TRUE); gl.Enable(OpenGL.GL_LIGHTING); gl.Enable(OpenGL.GL_LIGHT0); gl.ShadeModel(OpenGL.GL_SMOOTH); gl.ClearColor( 1.0f * Color.SkyBlue.R / 255, 1.0f * Color.SkyBlue.G / 255, 1.0f * Color.SkyBlue.B / 255, 0 ); gl.Enable(OpenGL.GL_DEPTH_TEST); /* * Включим обработку текстур * */ gl.Enable(OpenGL.GL_TEXTURE_2D); texture.Create(gl, new Bitmap("Rock.jpg")); //зададим текстуру (по стандарту - камень) gl.MatrixMode(OpenGL.GL_PROJECTION); //установим матрицу проекции // Единичная матрица для последующих преобразований gl.LoadIdentity(); // Преобразование gl.Perspective( 60.0f, (double)Width / (double)Height, 0.01, Math.Max(hMap.Map.GetLength(0), hMap.Map.GetLength(1)) * STEP); // Зададим модель отображения gl.MatrixMode(OpenGL.GL_MODELVIEW); texture.Bind(gl); }
public void Initialise(OpenGL gl) { // Create the per pixel shader. shaderPerPixel = new ShaderProgram(); shaderPerPixel.Create(gl, ManifestResourceLoader.LoadTextFile(@"Shaders\PerPixel.vert"), ManifestResourceLoader.LoadTextFile(@"Shaders\PerPixel.frag"), null); shaderPerPixel.BindAttributeLocation(gl, VertexAttributes.Position, "Position"); shaderPerPixel.BindAttributeLocation(gl, VertexAttributes.Normal, "Normal"); gl.ClearColor(0f,0f, 0f, 1f); // Immediate mode only features! gl.Enable(OpenGL.GL_TEXTURE_2D); }
public void ResetOpenGL() { SharpGL.OpenGL gl = this.openGLControl1.OpenGL; gl.Viewport(0, 0, openGLControl1.Width, openGLControl1.Height); gl.ClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.MatrixMode(MatrixMode.Projection); gl.LoadIdentity(); gl.Ortho(0, openGLControl1.Width, openGLControl1.Height, 0, -10, 10); gl.MatrixMode(MatrixMode.Modelview); }
private void openGLControl1_OpenGLDraw(object sender, PaintEventArgs e) { SharpGL.OpenGL gl = this.openGLControl1.OpenGL; gl.Viewport(0, 0, openGLControl1.Width, openGLControl1.Height); gl.ClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.MatrixMode(MatrixMode.Projection); gl.LoadIdentity(); gl.Ortho(0, openGLControl1.Width, openGLControl1.Height, 0, -10, 10); gl.MatrixMode(MatrixMode.Modelview); DrawGrid(); }
private void DrawSound() { gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); float[] spectrum = new float[256]; float[] wavedata = new float[512]; Player.getWaveData(ref wavedata, 256, 0); Player.getSpectrum(ref spectrum, 256, 0); DateTime currentDate = DateTime.Now; float time = (float)currentDate.Ticks / (float)TimeSpan.TicksPerSecond; gl.Uniform1(timeLoc, time); gl.Uniform1(sampleLoc, 256, spectrum); gl.Uniform1(waveLoc, 256, wavedata); gl.ClearColor(0.0f, 0.0f, 0.0f, 1.0f); gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT); gl.DrawArrays(OpenGL.GL_TRIANGLES, 0, 6); }
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); }
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 SetClearColor(OpenGL _context, Color _color) { _context.ClearColor(_color.R, _color.G, _color.B, _color.A); }
public override void OnRender(OpenGL gl) { gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); gl.ClearColor(0.137f, 0.121f, 0.125f, 0f); _graph.Render(); }
/// <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()); }
public override void OnRender(OpenGL gl) { gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); gl.ClearColor(0.137f, 0.121f, 0.125f, 0f); _graph.Render(); gl.Disable(OpenGL.GL_DEPTH_TEST); using (new Bind(_shader)) { gl.UniformMatrix4(_modelUniform, 1, false, Mat4.Identity.ToColumnMajorArray()); gl.PointSize(10f); gl.Begin(BeginMode.Points); gl.Vertex(6, 0); gl.End(); } gl.PointSize(5f); _points.Render(); gl.Enable(OpenGL.GL_DEPTH_TEST); }