public FrameBufferObject(int width, int height, TextureUnit textureUnit, string description) { SetFrameBufferHandles(width, height, textureUnit, description); GL.GenTextures(1, out mFboTexture); SetupFrameBufferTexture(); GL.Ext.GenFramebuffers(1, out fbo_handle); }
public void Use(TextureUnit unit) { if(!Generated) { Handle = GL.GenTexture(); GL.Enable(EnableCap.TextureCubeMapSeamless); GL.BindTexture(TextureTarget.TextureCubeMap, Handle); GL.TexImage2D(TextureTarget.TextureCubeMapPositiveX, 0, PixelInternalFormat.Rgba, Size.Width, Size.Height, 0, OpenTK.Graphics.OpenGL4.PixelFormat.Bgra, PixelType.UnsignedByte, BitmapPosX); GL.TexImage2D(TextureTarget.TextureCubeMapPositiveY, 0, PixelInternalFormat.Rgba, Size.Width, Size.Height, 0, OpenTK.Graphics.OpenGL4.PixelFormat.Bgra, PixelType.UnsignedByte, BitmapPosY); GL.TexImage2D(TextureTarget.TextureCubeMapPositiveZ, 0, PixelInternalFormat.Rgba, Size.Width, Size.Height, 0, OpenTK.Graphics.OpenGL4.PixelFormat.Bgra, PixelType.UnsignedByte, BitmapPosZ); GL.TexImage2D(TextureTarget.TextureCubeMapNegativeX, 0, PixelInternalFormat.Rgba, Size.Width, Size.Height, 0, OpenTK.Graphics.OpenGL4.PixelFormat.Bgra, PixelType.UnsignedByte, BitmapNegX); GL.TexImage2D(TextureTarget.TextureCubeMapNegativeY, 0, PixelInternalFormat.Rgba, Size.Width, Size.Height, 0, OpenTK.Graphics.OpenGL4.PixelFormat.Bgra, PixelType.UnsignedByte, BitmapNegY); GL.TexImage2D(TextureTarget.TextureCubeMapNegativeZ, 0, PixelInternalFormat.Rgba, Size.Width, Size.Height, 0, OpenTK.Graphics.OpenGL4.PixelFormat.Bgra, PixelType.UnsignedByte, BitmapNegZ); GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.LinearMipmapLinear); GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); GL.GenerateMipmap(GenerateMipmapTarget.TextureCubeMap); GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat); GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat); GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureWrapR, (int)TextureWrapMode.Repeat); FreeCPU(); Generated = true; } GL.ActiveTexture(unit); GL.BindTexture(TextureTarget.TextureCubeMap, Handle); }
public VertexElement(VertexElementFormat type, VertexElementUsage kind, TextureUnit unit) : this() { Type = type; Kind = kind; Unit = unit; }
public Texture this[TextureUnit texUnit] { get { if (!_textures.ContainsKey(texUnit)) return null; return _textures[texUnit]; } }
public TerrainTexture(TextureUnit unit, int sideVertexCount, string sourceFormat, int maxLevels) : base(unit, GetImageArray(sourceFormat, maxLevels, sideVertexCount)) { this.MinFilter = TextureMinFilter.Nearest; this.MagFilter = TextureMagFilter.Nearest; this.WrapS = TextureWrapMode.ClampToBorder; this.WrapT = TextureWrapMode.ClampToBorder; }
/// <summary> /// Binds the <see cref="Sampler"/> to the <see cref="P:TextureUnit"/>. /// </summary> public Binding Bind(TextureUnit textureUnit) { this.VerifyAccess(); this.textureUnit = textureUnit; GL.BindSampler(textureUnit, this); return new Binding(this); }
public static void ActiveTexture(TextureUnit textureUnit) { if (textureUni != textureUnit) { textureUni = textureUnit; GL.ActiveTexture(textureUnit); } }
public SamplerEffectUniform(EffectPass pass, ProgramUniform uniform, TextureUnit textureUnit) : base(pass, uniform) { Contract.Requires<ArgumentNullException>(pass != null); Contract.Requires<ArgumentNullException>(uniform != null); Contract.Requires<ArgumentOutOfRangeException>(textureUnit >= TextureUnit.Zero); this.TextureUnit = textureUnit; }
public TextureArray(TextureUnit unit, ImageArray images) : base(unit, images) { dirtyRegions = new HashSet<Region2D>[images.Depth]; for (int i = 0; i < dirtyRegions.Length; i++) { dirtyRegions[i] = new HashSet<Region2D>(); } }
public void ChangeResolution(int width, int height, TextureUnit textureUnit, string description) { //Detach(); // monster crash fix ? SetFrameBufferHandles(width, height, textureUnit, description); Detach(); SetupFrameBufferTexture(); }
public void Use(TextureUnit unit) { if(!Generated) { Handle = GL.GenTexture(); GL.BindTexture(TextureTarget.Texture2D, Handle); GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, Width, Height, 0, OpenTK.Graphics.OpenGL4.PixelFormat.Bgra, PixelType.UnsignedByte, Data); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest); Generated = true; } GL.ActiveTexture(unit); GL.BindTexture(TextureTarget.Texture2D, Handle); }
/// <summary> /// Loads the given image as a 32bpp RGBA texture. /// </summary> public static void LoadTexture(Bitmap bmpTex, TextureUnit slot) { Debug.WriteLine("loading array texture"); BitmapData bmpDataTex = bmpTex.LockBits( new Rectangle(0, 0, bmpTex.Width, bmpTex.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); Debug.WriteLine("loaded " + bmpTex.Width + "x" + bmpTex.Height + " tex, binding"); // set it as texture 0 GL.ActiveTexture(slot); GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bmpTex.Width, bmpTex.Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Rgba, PixelType.UnsignedByte, bmpDataTex.Scan0); // clean up bmpTex.UnlockBits(bmpDataTex); Debug.WriteLine("array texture loaded"); }
public void Use(TextureUnit unit) { if(!Generated) { Handle = GL.GenTexture(); GL.BindTexture(TextureTarget.Texture3D, Handle); GL.TexImage3D(TextureTarget.Texture3D, 0, PixelInternalFormat.R32ui, (int)Size.X, (int)Size.Y, (int)Size.Z, 0, OpenTK.Graphics.OpenGL4.PixelFormat.RedInteger, PixelType.UnsignedInt, new IntPtr(0)); GL.TexParameter(TextureTarget.Texture3D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); GL.TexParameter(TextureTarget.Texture3D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); GL.TexParameter(TextureTarget.Texture3D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat); GL.TexParameter(TextureTarget.Texture3D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat); GL.TexParameter(TextureTarget.Texture3D, TextureParameterName.TextureWrapR, (int)TextureWrapMode.Repeat); Generated = true; } GL.ActiveTexture(unit); GL.BindTexture(TextureTarget.Texture3D, Handle); }
protected BoundTexture(TextureUnit unit, Image image) : base(image) { Initialize(unit); }
public void BindTexture(TextureUnit samplerID) { GL.ActiveTexture(samplerID); GL.BindTexture(TextureTarget.Texture2D, this.TextureID); }
/// <summary> /// Binds the texture to the given texture unit at its default texture target. /// </summary> /// <param name="unit">The texture unit to bind to.</param> public void Bind(TextureUnit unit) { GL.ActiveTexture(unit); Bind(); }
public TextureBinding(Texture source, TextureUnit textureSlot, TextureTarget target) { texture = source; textureUnit = textureSlot; textureTarget = target; }
/// <summary> /// Set the active Texture unit /// glActiveTexture selects which texture unit subsequent texture state calls will affect. The number of texture units an implementation supports is implementation dependent, but must be at least 80. /// </summary> /// <param name="texUnit">Specifies which texture unit to make active. The number of texture units is implementation dependent, but must be at least 80. texture must be one of GL_TEXTUREi, where i ranges from 0 (GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1). The initial value is GL_TEXTURE0.</param> public static void ActiveTexture(TextureUnit texUnit) { Delegates.glActiveTexture(texUnit); }
public void Bind(TextureUnit slot = TextureUnit.Texture0) { GL.ActiveTexture(slot); GL.BindTexture(TextureTarget.Texture2D, _handle); }
internal static bool AtlasTextureIsBound(TextureUnit unit) => last_bound_texture[GetTextureUnitId(unit)] is TextureGLAtlas;
internal static int GetTextureUnitId(TextureUnit unit) => (int)unit - (int)TextureUnit.Texture0;
public TextureBinding(Texture texture, TextureUnit textureSlot, TextureTarget target) { textureId = texture != null ? texture.Id : 0; textureUnit = textureSlot; textureTarget = target; }
public TextureInfo( ShaderProgram shader, String identifier, TextureUnit textureUnit = TextureUnit.Texture0 ) { Shader = shader; Identifier = identifier; UniformLocation = GL.GetUniformLocation( Shader.Program, Identifier ); TextureUnit = textureUnit; Shader.Use(); int val = int.Parse( TextureUnit.ToString().Substring( "Texture".Length ) ); GL.Uniform1( UniformLocation, val ); CurrentTexture = null; }
public partial void ClientActiveTexture([Flow(FlowDirection.In)] TextureUnit texture);
public void AddTexture(TextureUnit texUnit, Texture texture) { _textures.Add(texUnit, texture); }
public partial void MultiTexCoord1([Flow(FlowDirection.In)] TextureUnit target, [Flow(FlowDirection.In)] double s);
/// <summary> /// Binds the <see cref="Texture"/> to the specified <paramref name="textureUnit"/>. /// </summary> /// <param name="textureUnit">The <see cref="TextureUnit"/> to bind to.</param> public virtual Binding Bind(TextureUnit textureUnit) { Contract.Requires<ArgumentOutOfRangeException>(textureUnit >= 0); this.VerifyAccess(); this.textureUnit = textureUnit; OpenTK.Graphics.OpenGL4.TextureUnit unit = textureUnit; GL.ActiveTexture(textureUnit); GL.BindTexture(this.Target, this); return new Binding(this); }
public TextureContainter(TextureContainerMx owner, TextureUnit textureUnit, int textureUnitNo) { _owner = owner; _textureUnit = textureUnit; _textureUnitNo = textureUnitNo; }
public static void MultiTexCoord2Checked(TextureUnit unit, double s, double t) { if (SupportsFunction("glMultiTexCoord2dARB")) GL.Arb.MultiTexCoord2(unit, s, t); else GL.TexCoord2(s, t); }
public static void MultiTexCoord2(TextureUnit target, ref Vector2d v) { GL.MultiTexCoord2(target, v.X, v.Y); }
public void ActivateTextureUnit(TextureUnit textureUnit) { NativeGl.glActiveTexture((uint)textureUnit); }
public static void MultiTexCoord3(TextureUnit target, ref Vector3d v) { GL.MultiTexCoord3(target, v.X, v.Y, v.Z); }
public void Bind(TextureUnit textureSlot = TextureUnit.Texture0) { _gl.ActiveTexture(textureSlot); _gl.BindTexture(TextureTarget.Texture2D, _handle); }
public static void MultiTexCoord4(TextureUnit target, ref Vector4d v) { GL.MultiTexCoord4(target, v.X, v.Y, v.Z, v.W); }
public void Bind(TextureUnit t) { GL.ActiveTexture(t); GL.BindTexture(type, id); }
public bool TryAddUniformTexture2D(int textureID, string uniformName, ShaderProg shader, TextureUnit unit) { if (shader.GetUniform(uniformName) != -1) { GL.ActiveTexture(unit); GL.BindTexture(TextureTarget.Texture2D, textureID); GL.Uniform1(shader.GetUniform(uniformName), (int)unit - 33984);//convertation of enum to int texture layer return(true); } else { return(false); } }
public void UnbindTexture(TextureUnit samplerID) { GL.ActiveTexture(samplerID); GL.BindTexture(TextureTarget.Texture2D, 0); }
/// <summary> /// Creates a new instance of <see cref="QFontSharedState"/> /// </summary> /// <param name="defaultTextureUnit">The default texture unit</param> /// <param name="shaderVariables">The shader variables</param> public QFontSharedState(TextureUnit defaultTextureUnit, ShaderLocations shaderVariables) { DefaultTextureUnit = defaultTextureUnit; ShaderVariables = shaderVariables; }
public void Use(TextureUnit unit = TextureUnit.Texture0) { GL.ActiveTexture(unit); GL.BindTexture(TextureTarget.Texture2D, Handle); }
public TextureAsset(string name, string filename, TextureUnit unit) : base(name, filename, unit) { }
public void AddTexture( string identifier, TextureUnit unit ) { myTextures.Add( identifier, new TextureInfo( this, identifier, unit ) ); ErrorCheck( "addtexture" ); }
public void Bind(TextureUnit textureUnit = TextureUnit.Texture0) { GL.ActiveTexture(textureUnit); GL.BindTexture(TextureTarget.Texture2D, Handle); }
/// <summary> /// Initializes a new instance of the <see cref="TextureUniform"/> class. /// </summary> /// <param name="name">The name of this uniform.</param> /// <param name="texture">The initial <see cref="Texture"/> value of this uniform.</param> /// <param name="target">The initial <see cref="TextureUnit"/> used by this uniform.</param> public TextureUniform(string name, Texture texture, TextureUnit target = TextureUnit.Texture0) { this.name = name; this.Target = target; this.Texture = texture; }
public void Use(TextureUnit unit) { if(!Generated) { ImageTextureTarget = TextureTarget.Texture2D; if(IsDDS) { uint o = 0; ImageDDS.LoadFromByteArray(Bitmap, out o, out ImageTextureTarget); Handle = (int)o; GL.BindTexture(ImageTextureTarget, Handle); } else { Handle = GL.GenTexture(); GL.BindTexture(ImageTextureTarget, Handle); GL.TexImage2D(ImageTextureTarget, 0, PixelInternalFormat.Rgba, Size.Width, Size.Height, 0, OpenTK.Graphics.OpenGL4.PixelFormat.Bgra, PixelType.UnsignedByte, Bitmap); } if(UseNearestFilter) { GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest); GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest); } else { GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.LinearMipmapLinear); GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); GL.TexParameter(ImageTextureTarget, TextureParameterName.GenerateMipmap, (int)TextureMagFilter.Linear); GL.GenerateMipmap((GenerateMipmapTarget)ImageTextureTarget); float maxAniso; GL.GetFloat((GetPName)OldGL.ExtTextureFilterAnisotropic.MaxTextureMaxAnisotropyExt, out maxAniso); GL.TexParameter(ImageTextureTarget, (TextureParameterName)OldGL.ExtTextureFilterAnisotropic.TextureMaxAnisotropyExt, maxAniso); //GL.TexParameter(ImageTextureTarget, (TextureParameterName)0x9366, 0x8008); } GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat); GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat); Generated = true; Bitmap = null; } GL.ActiveTexture(unit); GL.BindTexture(ImageTextureTarget, Handle); }
public static void MultiTexCoord2(TextureUnit target, ref Vector2 v) { GL.MultiTexCoord2(target, v.X, v.Y); }
public static void Unbind(TextureUnit textureUnit = TextureUnit.Texture0) { GL.ActiveTexture(textureUnit); GL.BindTexture(TextureTarget.Texture2D, 0); }
public static void MultiTexCoord4(TextureUnit target, ref Vector4 v) { GL.MultiTexCoord4(target, v.X, v.Y, v.Z, v.W); }
public bool ForceState; // the next GL_State will ignore glStateBits and set everything. public State() { int count = TextureUnits.Length; for(int i = 0; i < count; i++) { TextureUnits[i] = new TextureUnit(); } }
/* bind this texture for use in openGL calls */ public void Bind(TextureUnit unit, Action inner) { GL.ActiveTexture(unit); Bind(inner); }
public static void MultiTexCoord3(TextureUnit target, ref Vector3 v) { GL.MultiTexCoord3(target, v.X, v.Y, v.Z); }
public void BindTexture(TextureUnit texUnit) { mesh.BindTexture(texUnit); }
/// <summary> /// Sets a uniform texture. Shader must be called beforehand. /// </summary> public void SetUniform(string Name, TextureUnit Unit) { int loc = GL.GetUniformLocation(this.Program, Name); GL.Uniform1(loc, (int)Unit - (int)TextureUnit.Texture0); }
public partial uint BindTexGenParameter([Flow(FlowDirection.In)] TextureUnit unit, [Flow(FlowDirection.In)] TextureCoordName coord, [Flow(FlowDirection.In)] TextureGenParameter value);
/// <summary> /// Unbinds the <see cref="Texture"/> from the specified <paramref name="textureUnit"/>. /// </summary> /// <param name="textureUnit">The <see cref="TextureUnit"/> to unbind from.</param> public virtual void Unbind(TextureUnit textureUnit) { Contract.Requires<ArgumentOutOfRangeException>(textureUnit >= 0); this.VerifyAccess(); GL.ActiveTexture(textureUnit); GL.BindTexture(this.Target, 0); }
public partial uint BindTextureUnitParameter([Flow(FlowDirection.In)] TextureUnit unit, [Flow(FlowDirection.In)] EXT value);
public void BindTexture(TextureUnit textureUnit) { GL.ActiveTexture( textureUnit ); GL.BindTexture( TextureTarget.Texture3D, this.handle ); GL.ActiveTexture( TextureUnit.Texture0 ); }
public partial uint BindTextureUnitParameter([Flow(FlowDirection.In)] TextureUnit unit, [Flow(FlowDirection.In)] VertexShaderTextureUnitParameter value);
public static void ActiveTextureChecked(TextureUnit unit) { if (SupportsFunction("glActiveTextureARB")) GL.Arb.ActiveTexture(unit); }
public override void Draw(double deltaTime) { RenderTexture rt = RenderTexture; if (rt == null) { if (Camera == null) { return; } else { rt = Camera.TargetTexture; } } if (!rt.Loaded) { return; } // HDR抽出 hdrRT.Bind(Color4.Black); hdrShader.UseShader(); hdrShader.SetParameter(hdrShader.loc_resolution, hdrRT.Size.ToVector2().Inverse()); hdrShader.SetParameter(hdrShader.loc_mvp, ref orthoMatrix, false); hdrShader.SetParameter(hdrShader.loc_threshold, Threshold); hdrShader.SetParameter(TextureUnit.Texture0, rt.ColorDst0); Drawer.DrawTextureMesh(); hdrShader.UnuseShader(); // HDR画像のぼかし画像を生成 for (var i = 0; i < BlurNum; i++) { if (i == 0) { blurs[i].SrcTexture = hdrRT.ColorDst0; } else { blurs[i].SrcTexture = blurRTs[i - 1].ColorDst0; } blurs[i].Draw(deltaTime); } // Bloom処理 bloomRT.Bind(Color4.Black); bloomShader.UseShader(); bloomShader.SetParameter(bloomShader.loc_resolution, bloomRT.Size.ToVector2().Inverse()); bloomShader.SetParameter(bloomShader.loc_mvp, ref orthoMatrix, false); bloomShader.SetParameter(bloomShader.loc_intensity, Intensity); bloomShader.SetParameter(TextureUnit.Texture0, rt.ColorDst0); var units = new TextureUnit[] { TextureUnit.Texture1, TextureUnit.Texture2, TextureUnit.Texture3, TextureUnit.Texture4, TextureUnit.Texture5, }; for (var i = 0; i < 5; i++) { if (i < BlurNum) { bloomShader.SetParameter(units[i], blurRTs[i].ColorDst0); } else { bloomShader.SetParameter(units[i], bloomShader.black); } } Drawer.DrawTextureMesh(); bloomShader.UnuseShader(); // 書き出し rt.Bind(); Drawer.DrawTexture(bloomRT.ColorDst0); GL.BindTexture(TextureTarget.Texture2D, 0); }