当前位置: 首页>>代码示例>>C#>>正文


C# ShaderType类代码示例

本文整理汇总了C#中ShaderType的典型用法代码示例。如果您正苦于以下问题:C# ShaderType类的具体用法?C# ShaderType怎么用?C# ShaderType使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


ShaderType类属于命名空间,在下文中一共展示了ShaderType类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Transform

        /// <summary>
        /// Public translation interface.
        /// Translates the given method to GLSL
        /// </summary>
        /// <param name="s">Shader type definition.</param>
        /// <param name="m">A method representing a shader to translate.</param>
        /// <param name="attr">The shader type as attribute (either FragmentShaderAttribute or VertexShaderAttribute</param>
        /// <param name="type">The shader type as ShaderType</param>
        /// <returns>The translated GLSL shader source</returns>
        public FunctionDescription Transform(TypeDefinition s, MethodDefinition m, CustomAttribute attr,
            ShaderType type)
        {
            if (s == null)
                throw new ArgumentNullException("s");

            if (m == null)
                throw new ArgumentNullException("m");

            if (attr == null)
                throw new ArgumentNullException("attr");

            var ctx = new DecompilerContext(s.Module)
            {
                CurrentType = s,
                CurrentMethod = m,
                CancellationToken = CancellationToken.None
            };

            var d = AstMethodBodyBuilder.CreateMethodBody(m, ctx);

            var glsl = new GlslVisitor(d, attr, ctx);

            _functions.UnionWith(glsl.Functions);

            var entry = (bool)attr.ConstructorArguments.FirstOrDefault().Value;
            var sig = entry ? "void main()" : GlslVisitor.GetSignature(m);

            var code = glsl.Result;
            var desc = new FunctionDescription(entry ? "main" : Shader.GetMethodName(m), sig + code, entry, type);

            _dependencies.UnionWith(glsl.Dependencies);

            return desc;
        }
开发者ID:mono-soc-2011,项目名称:SLSharp,代码行数:44,代码来源:GlslTransform.cs

示例2: compileShader

        public static int compileShader(ShaderType shaderType, String shaderSource)
        {
            int shaderHandle = GL.CreateShader(shaderType);

            if (shaderHandle != 0)
            {
                // Pass in the shader source.
                GL.ShaderSource(shaderHandle, shaderSource);

                // Compile the shader.
                GL.CompileShader(shaderHandle);

                // Get the compilation status.
                int[] compileStatus = new int[1];
                GL.GetShader(shaderHandle,ShaderParameter.CompileStatus, compileStatus);

                // If the compilation failed, delete the shader.
                if (compileStatus[0] == 0)
                {
                    string shaderInfoLog = GL.GetShaderInfoLog(shaderHandle);
                    MessageBox.Show("Error creating shader: " + shaderInfoLog);
                    GL.DeleteShader(shaderHandle);
                    shaderHandle = 0;
                }
            }

            if (shaderHandle == 0)
            {
                 MessageBox.Show("Error creating shader.");
            }

            return shaderHandle;
        }
开发者ID:j1s1e1,项目名称:GlslMonoOpenTkExamples,代码行数:33,代码来源:Shader.cs

示例3: OnGUI

	void OnGUI() {
		const int height = 20;
		int width = (int)position.width;// -16;
		
		pmdFile = EditorGUI.ObjectField(
			new Rect(0, 0, width, height), "PMD File" , pmdFile, typeof(Object), false);
		
		// シェーダの種類
		shader_type = (ShaderType)EditorGUI.EnumPopup(new Rect(0, height, width, height), "Shader Type", shader_type);

		// 剛体を入れるかどうか
		rigidFlag = EditorGUI.Toggle(new Rect(0, height * 2, width / 2, height), "Rigidbody", rigidFlag);

		// Mecanimを使うかどうか
		use_mecanim = EditorGUI.Toggle(new Rect(0, height * 3, width / 2, height), "Use Mecanim", use_mecanim);

		// IKを使うかどうか
		use_ik = EditorGUI.Toggle(new Rect(0, height * 4, width / 2, height), "Use IK", use_ik);
		
		int buttonHeight = height * 5;
		if (pmdFile != null) {
			if (GUI.Button(new Rect(0, buttonHeight, width / 2, height), "Convert")) {
				new PMDLoaderScript(pmdFile, shader_type, rigidFlag, use_mecanim, use_ik);
				pmdFile = null;		// 読み終わったので空にする 
			}
		} else {
			EditorGUI.LabelField(new Rect(0, buttonHeight, width, height), "Missing", "Select PMD File");
		}
	}
开发者ID:NektariosP,项目名称:unity-opencv-android,代码行数:29,代码来源:PMDLoaderWindow.cs

示例4: ShaderException

 public ShaderException(string message, string shaderLog, string shaderSource, ShaderType shaderType)
     : base(message)
 {
     ShaderLog = shaderLog;
     ShaderSource = shaderSource;
     ShaderType = shaderType;
 }
开发者ID:EdgeWorks-Games,项目名称:DeferVox,代码行数:7,代码来源:ShaderExceptions.cs

示例5: FromFile

        public static Shader FromFile(ShaderType type, string fileName)
        {
            Shader shader = new Shader(type, string.Empty);
            shader.LoadSource(fileName);

            return shader;
        }
开发者ID:Grimston,项目名称:ezterrain,代码行数:7,代码来源:Shader.cs

示例6: CompileShaderObject

		protected int CompileShaderObject(ShaderType type, string name)
		{
			string ext = type == ShaderType.VertexShader ? "vert" : "frag";
			string filename = "glsl{0}{1}.{2}".F(Path.DirectorySeparatorChar, name, ext);
			string code;
			using (var file = new StreamReader(GlobalFileSystem.Open(filename)))
				code = file.ReadToEnd();

			var shader = GL.CreateShader(type);
			ErrorHandler.CheckGlError();
			GL.ShaderSource(shader, code);
			ErrorHandler.CheckGlError();
			GL.CompileShader(shader);
			ErrorHandler.CheckGlError();
			int success;
			GL.GetShader(shader, ShaderParameter.CompileStatus, out success);
			ErrorHandler.CheckGlError();
			if (success == (int)All.False)
			{
				int len;
				GL.GetShader(shader, ShaderParameter.InfoLogLength, out len);
				var log = new StringBuilder(len);
				unsafe
				{
					GL.GetShaderInfoLog(shader, len, null, log);
				}

				Log.Write("graphics", "GL Info Log:\n{0}", log.ToString());
				throw new InvalidProgramException("Compile error in shader object '{0}'".F(filename));
			}

			return shader;
		}
开发者ID:Roger-luo,项目名称:OpenRA,代码行数:33,代码来源:Shader.cs

示例7: GetShaderSource

        /// <summary>
        /// Gets shader's source code for color coded picking.
        /// </summary>
        /// <param name="shaderType"></param>
        /// <returns></returns>
        private static string GetShaderSource(ShaderType shaderType)
        {
            string result = string.Empty;

            switch (shaderType)
            {
                case ShaderType.VertexShader:
                    if (vertexShader == null)
                    {
                        vertexShader = ManifestResourceLoader.LoadTextFile(@"Resources.Highlight.vert");
                    }
                    result = vertexShader;
                    break;
                case ShaderType.FragmentShader:
                    if (fragmentShader == null)
                    {
                        fragmentShader = ManifestResourceLoader.LoadTextFile(@"Resources.Highlight.frag");
                    }
                    result = fragmentShader;
                    break;
                default:
                    throw new NotImplementedException();
            }

            return result;
        }
开发者ID:chantsunman,项目名称:CSharpGL,代码行数:31,代码来源:HighlightShaderHelper.cs

示例8: CompileShader

        public static int CompileShader(ShaderType type, string source)
        {
            int shader = GL.CreateShader(type);
            GL.ShaderSource(shader, source);
            GL.CompileShader(shader);
            int compileResult;
            GL.GetShader(shader, ShaderParameter.CompileStatus, out compileResult);
            if (compileResult == 0)
            {
                int infoLogLength;
                GL.GetShader(shader, ShaderParameter.InfoLogLength, out infoLogLength);
                string infolog;
                GL.GetShaderInfoLog(shader, out infolog);
                GL.DeleteShader(shader);
                //std::vector<GLchar> infoLog(infoLogLength);
                //glGetShaderInfoLog(shader, infoLog.size(), NULL, &infoLog[0]);

                //std::cerr << "shader compilation failed: " << &infoLog[0];

                //glDeleteShader(shader);
                shader = 0;
            }

            return shader;
        }
开发者ID:prepare,项目名称:HTML-Renderer,代码行数:25,代码来源:ES2Utils.cs

示例9: ShaderFile

 public ShaderFile(ShaderType type, string filename, string friendlyName)
     : base(type)
 {
     this.filename = filename;
     this.friendlyName = friendlyName;
     this.fileWatcher = new FileModifiedWatcher(filename);
 }
开发者ID:corefan,项目名称:awgraphics,代码行数:7,代码来源:ShaderFile.cs

示例10: CreateShader

 public int CreateShader(ShaderType shaderType)
 {
     GraphicsContext.Assert();
     int shader = GL.CreateShader(shaderType);
     OpenGlErrorHelper.CheckGlError();
     return shader;
 }
开发者ID:rmckirby,项目名称:XogoEngine,代码行数:7,代码来源:ShaderAdapter.cs

示例11: CreateShader

 public static int CreateShader(string shaderSource, ShaderType type){
   int shaderHandle = GL.CreateShader( type );
   GL.ShaderSource( shaderHandle, shaderSource );
   GL.CompileShader( shaderHandle );
   Console.WriteLine(GL.GetShaderInfoLog(shaderHandle));
   return shaderHandle;
 }
开发者ID:dgopena,项目名称:Starter3D.Base,代码行数:7,代码来源:OpenGLHelper.cs

示例12: Shader

        /// <summary>
        /// Creates a shader from a string of shader source code.
        /// </summary>
        /// <param name="shaderCode">The source code for the shader.</param>
        /// <param name="shaderType">Same as the argument to glCreateShader. For example ShaderType.VertexShader
        ///                          or ShaderType.FragmentShader.</param>
        public Shader(string shaderCode, ShaderType shaderType)
        {
            _object = 0;
            _refCount = 0;

            //create the shader object
            _object = GL.CreateShader(shaderType);
            if (_object == 0)
                throw new Exception("glCreateShader failed");

            //set the source code
            GL.ShaderSource(_object, shaderCode);

            // compile
            GL.CompileShader(_object);

            // throw exception if compile error occurred
            int status;
            GL.GetShader(_object, ShaderParameter.CompileStatus, out status);
            if (status == 0) {
                string msg = "Compile failure in shader: ";

                string strInfoLog;
                GL.GetShaderInfoLog((int)_object, out strInfoLog);
                msg += strInfoLog;

                GL.DeleteShader(_object);
                _object = 0;
                throw new Exception(msg);
            }

            _refCount = 1;
        }
开发者ID:remy22,项目名称:opengl-series-csharp,代码行数:39,代码来源:Shader.cs

示例13: ShaderBuilder

        /// <summary>
        /// Constructor to create a new ShaderBuilder instance.
        /// </summary>
        /// <param name="type">The shader type to generate the source for</param>
        /// <param name="twoDimensional">If true, some helper code for two dimensional shaders will be included</param>
        /// <param name="parent">Previous shader in the pipeline (if any)</param>
        public ShaderBuilder(ShaderType type, bool twoDimensional, ShaderBuilder parent = null)
        {
            Type = type;
            _twoDimensional = twoDimensional;

            // Prepare an empty list of OpenGL extensions
            _extensions = new List<String>();

            // Set up variable lists
            _uniforms = new List<ShaderVariable>();
            _attribs = new List<ShaderVariable>();
            _varyings = new List<ShaderVariable>();

            if (type == ShaderType.VertexShader && twoDimensional) {
                AddUniform(ShaderVarType.Vec2, "screen_resolution");
            }

            // If the builder is given a parent, copy any outputs
            // from that shader as inputs for this one
            if (parent != null) {
                foreach (var vary in parent._varyings) {
                    AddVarying(vary.Type, vary.Identifier);
                }
            }

            Logic = "";

            // Default fragment colour output variable identifier
            FragOutIdentifier = "out_colour";
        }
开发者ID:Metapyziks,项目名称:ComputerGraphicsCoursework,代码行数:36,代码来源:ShaderBuilder.cs

示例14: CreateCompiledSubShader

		private static int CreateCompiledSubShader(ShaderType shaderType, string subShaderCode)
		{
			uint shaderHandle = GLCore.CreateShader(shaderType);
			GLHelper.ShaderSource(shaderHandle, subShaderCode.Replace("precision mediump float;", ""));
			GLCore.CompileShader(shaderHandle);
			return (int)shaderHandle;
		}
开发者ID:whztt07,项目名称:DeltaEngine,代码行数:7,代码来源:OpenGLShader.cs

示例15: CompileShader

        public static bool CompileShader(ShaderType type, string file, out int shader)
        {
            string src = System.IO.File.ReadAllText(file);
            shader = GL.CreateShader(type);
            GL.ShaderSource(shader, 1, new string[] { src }, (int[])null);
            GL.CompileShader(shader);
            #if DEBUG
            int logLength = 0;
            GL.GetShader (shader, ShaderParameter.InfoLogLength, out logLength);
            if (logLength > 0)
            {
                var infoLog = new System.Text.StringBuilder ();
                GL.GetShaderInfoLog (shader, logLength, out logLength, infoLog);
                Console.WriteLine ("Shader compile log:\n{0}", infoLog);
            }
            #endif
            int status = 0;
            GL.GetShader(shader, ShaderParameter.CompileStatus, out status);
            if (status == 0)
            {
                GL.DeleteShader(shader);
                return false;
            }

            return true;
        }
开发者ID:jfoshee,项目名称:MonoTouch-Playground,代码行数:26,代码来源:ShaderUtilities.cs


注:本文中的ShaderType类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。