Esempio n. 1
0
        TextureSlot[] ReadTextureStack(BinaryReader reader, Dictionary <string, Texture> textures)
        {
            var count = reader.ReadInt32();

            if (count == 0)
            {
                return(null);
            }
            var slots = new TextureSlot[count];

            for (var i = 0; i < count; i++)
            {
                var name = reader.ReadString();
                if (!textures.ContainsKey(name))
                {
                    throw new ContentException("Referenced texture not found: " + name);
                }
                slots[i] = new TextureSlot(
                    textures[name],
                    reader.ReadInt32(),
                    reader.ReadSingle(),
                    (TextureOperation)reader.ReadInt32(),
                    reader.ReadBoolean() ? TextureWrap.Repeat : TextureWrap.Clamp,
                    reader.ReadBoolean() ? TextureWrap.Repeat : TextureWrap.Clamp);
            }
            return(slots);
        }
Esempio n. 2
0
		TextureSlot[] ReadTextureStack (BinaryReader reader, Dictionary<string, Texture> textures) {
			var count = reader.ReadInt32();
			if (count == 0)
				return null;
			var slots = new TextureSlot[count];
			for (var i = 0; i < count; i++) {
				var name = reader.ReadString();
				if (!textures.ContainsKey(name))
					throw new ContentException("Referenced texture not found: " + name);
				slots[i] = new TextureSlot(
					textures[name],
					reader.ReadInt32(),
					reader.ReadSingle(),
					(TextureOperation)reader.ReadInt32(),
					reader.ReadBoolean() ? TextureWrap.Repeat : TextureWrap.Clamp,
					reader.ReadBoolean() ? TextureWrap.Repeat : TextureWrap.Clamp);
			}
			return slots;
		}
Esempio n. 3
0
		static void SetTextures(Shader shader, ref int unit, TextureSlot[] stack, string[] names, string[] blendNames) {
			for (var i = 0; i < stack.Length; i++) {
				var slot = stack[i];
				GL.ActiveTexture(TextureUnit.Texture0 + unit);
				GL.BindTexture(TextureTarget.Texture2D, slot.Texture.Handle);
				GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)slot.WrapS);
				GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)slot.WrapT);
				shader.Uniform(names[i], unit++);
				shader.Uniform(blendNames[i], slot.BlendFactor);
			}
		}
Esempio n. 4
0
		static MeshTextureSlot[] GetMeshTextureStack(TextureSlot[] slots) {
			return slots == null ? null : slots.Select(s => new MeshTextureSlot(s.UVIndex, s.BlendFactor, s.Operation)).ToArray();
		}