public Texture2D GetBumpTexture() { if (!bumpTextureInitialized) { lock (synObj) { if (!bumpTextureInitialized) { if (!string.IsNullOrEmpty(this.BumpFilename)) { var texture = new Texture2D(); var bitmap = new System.Drawing.Bitmap(this.BumpFilename); texture.Initialize(bitmap); this.BumpTexture = texture; } bumpTextureInitialized = true; } } } return this.BumpTexture; }
protected override void DoInitialize() { skybox_prog = GL.CreateProgram(); ShaderHelper.vglAttachShaderSource(skybox_prog, ShaderType.VertexShader, skybox_shader_vs); ShaderHelper.vglAttachShaderSource(skybox_prog, ShaderType.FragmentShader, skybox_shader_fs); GL.LinkProgram(skybox_prog); object_prog = GL.CreateProgram(); ShaderHelper.vglAttachShaderSource(object_prog, ShaderType.VertexShader, object_shader_vs); ShaderHelper.vglAttachShaderSource(object_prog, ShaderType.FragmentShader, object_shader_fs); GL.LinkProgram(object_prog); GL.GenBuffers(1, cube_vbo); GL.BindBuffer(BufferTarget.ArrayBuffer, cube_vbo[0]); var cube_vertices = new UnmanagedArray<vec3>(8); cube_vertices[0] = new vec3(-1.0f, -1.0f, -1.0f); cube_vertices[1] = new vec3(-1.0f, -1.0f, 1.0f); cube_vertices[2] = new vec3(-1.0f, 1.0f, -1.0f); cube_vertices[3] = new vec3(-1.0f, 1.0f, 1.0f); cube_vertices[4] = new vec3(1.0f, -1.0f, -1.0f); cube_vertices[5] = new vec3(1.0f, -1.0f, 1.0f); cube_vertices[6] = new vec3(1.0f, 1.0f, -1.0f); cube_vertices[7] = new vec3(1.0f, 1.0f, 1.0f); GL.BufferData(BufferTarget.ArrayBuffer, cube_vertices, BufferUsage.StaticDraw); cube_vertices.Dispose(); GL.GenVertexArrays(1, vao); GL.BindVertexArray(vao[0]); GL.VertexAttribPointer(0, 3, GL.GL_FLOAT, false, 0, IntPtr.Zero); GL.EnableVertexAttribArray(0); GL.GenBuffers(1, cube_element_buffer); GL.BindBuffer(BufferTarget.ElementArrayBuffer, cube_element_buffer[0]); GL.BufferData(BufferTarget.ElementArrayBuffer, cube_vertices, BufferUsage.StaticDraw); skybox_rotate_loc = GL.GetUniformLocation(skybox_prog, "tc_rotate"); object_mat_mvp_loc = GL.GetUniformLocation(object_prog, "mat_mvp"); object_mat_mv_loc = GL.GetUniformLocation(object_prog, "mat_mv"); skyboxTexLocation = GL.GetUniformLocation(skybox_prog, "tex"); objectTexLocation = GL.GetUniformLocation(object_prog, "tex"); var cube_indices = new UnmanagedArray<ushort>(16); // First strip cube_indices[0] = 0; cube_indices[1] = 1; cube_indices[2] = 2; cube_indices[3] = 3; cube_indices[4] = 6; cube_indices[5] = 7; cube_indices[6] = 4; cube_indices[7] = 5; // Second strip cube_indices[8] = 2; cube_indices[9] = 6; cube_indices[10] = 0; cube_indices[11] = 4; cube_indices[12] = 1; cube_indices[13] = 5; cube_indices[14] = 3; cube_indices[15] = 7; tex = new Texture2D(); //System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(@"media\TantolundenCube.dds"); System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(@"media\TantolundenCube.png"); tex.Initialize(bmp); vboObject.LoadFromVBM(@"media\unit_torus.vbm", 0, 1, 2); }