public static int loadCubeMap() { int texID = GL.GenTexture(); GL.ActiveTexture(TextureUnit.Texture0); GL.BindTexture(TextureTarget.TextureCubeMap, texID); var cubeMapTextures = loadCubeMapTextures(); foreach (var dictValues in cubeMapTextures) { var target = TextureTarget.Texture2D; switch (dictValues.Key) { case EnumFacing.NORTH: target = TextureTarget.TextureCubeMapNegativeZ; break; case EnumFacing.SOUTH: target = TextureTarget.TextureCubeMapPositiveZ; break; case EnumFacing.EAST: target = TextureTarget.TextureCubeMapPositiveX; break; case EnumFacing.WEST: target = TextureTarget.TextureCubeMapNegativeX; break; case EnumFacing.UP: target = TextureTarget.TextureCubeMapPositiveY; break; case EnumFacing.DOWN: target = TextureTarget.TextureCubeMapNegativeY; break; } var bmp = (Bitmap)dictValues.Value.Clone(); var size = bmp.Size; BitmapData data = bmp.LockBits(new Rectangle(0, 0, size.Width, size.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); GL.TexImage2D(target, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0, PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0); bmp.UnlockBits(data); } GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureWrapS, (int)TextureWrapMode.ClampToEdge); GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureWrapT, (int)TextureWrapMode.ClampToEdge); return(texID); }
public void RenderTextured(IGraphicsContext context, ITexture lightmapTexture) { foreach (var subset in GetSubsets <ITexture>(Textured).Where(x => x.Instance != null)) { GL.ActiveTexture(OpenTK.Graphics.OpenGL.TextureUnit.Texture0); var tex = (ITexture)subset.Instance; tex.Bind(); GL.ActiveTexture(OpenTK.Graphics.OpenGL.TextureUnit.Texture1); lightmapTexture.Bind(); Render(context, PrimitiveType.Triangles, subset); GL.ActiveTexture(OpenTK.Graphics.OpenGL.TextureUnit.Texture0); } }
public static TextureHandle Create(Size <Pixels> size, IOSurface surface) { GL.ActiveTexture(TextureUnit.Texture0); var texture = new TextureHandle(GL.GenTexture()); GL.BindTexture(TextureTarget.TextureRectangle, texture); GL.TexParameter(TextureTarget.TextureRectangle, TextureParameterName.TextureMagFilter, (int)(TextureMagFilter.Nearest)); GL.TexParameter(TextureTarget.TextureRectangle, TextureParameterName.TextureMinFilter, (int)(TextureMinFilter.Linear)); GL.TexParameter(TextureTarget.TextureRectangle, TextureParameterName.TextureWrapS, (int)(TextureWrapMode.ClampToEdge)); GL.TexParameter(TextureTarget.TextureRectangle, TextureParameterName.TextureWrapT, (int)(TextureWrapMode.ClampToEdge)); Resize(texture, size, surface); return(texture); }
public void RenderUntextured(IGraphicsContext context, Coordinate location) { GL.ActiveTexture(OpenTK.Graphics.OpenGL.TextureUnit.Texture0); TextureHelper.Unbind(); GL.ActiveTexture(OpenTK.Graphics.OpenGL.TextureUnit.Texture1); TextureHelper.Unbind(); GL.ActiveTexture(OpenTK.Graphics.OpenGL.TextureUnit.Texture0); foreach (var subset in GetSubsets <ITexture>(Textured).Where(x => x.Instance == null)) { Render(context, PrimitiveType.Triangles, subset); } foreach (var subset in GetSubsets <Entity>(Textured)) { var e = (Entity)subset.Instance; if (!CBRE.Settings.View.DisableModelRendering && e.HasModel() && e.HideDistance() > (location - e.Origin).VectorMagnitude()) { continue; } Render(context, PrimitiveType.Triangles, subset); } }
public void ActiveTexture(GLTextureUnit texture) { GL.ActiveTexture((TextureUnit)texture); }