/// <summary> /// Setup OpenGL and load resources here. /// </summary> /// <param name="e">Not used.</param> protected override void OnLoad(EventArgs e) { GL.ClearColor(0.1f, 0.3f, 0.6f, 0.0f); /* Blue background */ GL.Enable(EnableCap.DepthTest); GL.Enable(EnableCap.Texture2D); GL.PixelStore(PixelStoreParameter.UnpackAlignment, 1); /* Tightly packed texture data. */ GL.GenTextures(2, texObj); GL.BindTexture(TextureTarget.Texture2D, texObj[1]); /* Load each mipmap level of range-compressed 128x128 brick normal map texture. */ unsafe { fixed (byte* b = ImageBrick.Array) { byte* image = b; int size; int level; for (size = 128, level = 0; size > 0; image += 3 * size * size, size /= 2, level++) { GL.TexImage2D(TextureTarget.Texture2D, level, PixelInternalFormat.Rgba8, size, size, 0, PixelFormat.Rgb, PixelType.UnsignedByte, new IntPtr(image)); } } } GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)All.LinearMipmapLinear); GL.BindTexture(TextureTarget.TextureCubeMap, texObj[0]); /* Load each 32x32 face (without mipmaps) of range-compressed "normalize vector" cube map. */ unsafe { fixed (byte* b = ImageNormcm.Array) { byte* image = b; int face; for (face = 0; face < 6; face++, image += 3 * 32 * 32) { GL.TexImage2D(TextureTarget.TextureCubeMapPositiveX + face, 0, PixelInternalFormat.Rgba8, 32, 32, 0, PixelFormat.Rgb, PixelType.UnsignedByte, new IntPtr(image)); } } } GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureMinFilter, (int)All.Linear); GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureWrapS, (int)All.ClampToEdge); GL.TexParameter(TextureTarget.TextureCubeMap, TextureParameterName.TextureWrapT, (int)All.ClampToEdge); this.CgContext = CgNet.Context.Create(); CgGL.SetDebugMode(false); this.CgContext.ParameterSettingMode = ParameterSettingMode.Deferred; this.CgContext.SetManageTextureParameters(true); vertexProfile = ProfileClass.Vertex.GetLatestProfile(); vertexProfile.SetOptimalOptions(); vertexProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ VertexProgramFileName, /* Name of file containing program */ vertexProfile, /* Profile: OpenGL ARB vertex program */ VertexProgramName, /* Entry function name */ null); /* No extra compiler options */ vertexProgram.Load(); this.myCgVertexParam_lightPosition = vertexProgram.GetNamedParameter("lightPosition"); this.myCgVertexParam_eyePosition = vertexProgram.GetNamedParameter("eyePosition"); this.myCgVertexParam_modelViewProj = vertexProgram.GetNamedParameter("modelViewProj"); fragmentProfile = ProfileClass.Fragment.GetLatestProfile(); fragmentProfile.SetOptimalOptions(); fragmentProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ FragmentProgramFileName, /* Name of file containing program */ fragmentProfile, /* Profile: OpenGL ARB vertex program */ FragmentProgramName, /* Entry function name */ null); /* No extra compiler options */ fragmentProgram.Load(); myCgFragmentParam_ambient = fragmentProgram.GetNamedParameter("ambient"); myCgFragmentParam_ambient.Set(0.2f); myCgFragmentParam_LMd = fragmentProgram.GetNamedParameter("LMd"); myCgFragmentParam_LMd.Set(0.8f, 0.7f, 0.2f); myCgFragmentParam_LMs = fragmentProgram.GetNamedParameter("LMs"); myCgFragmentParam_LMs.Set(0.5f, 0.5f, 0.8f); myCgFragmentParam_normalMap = fragmentProgram.GetNamedParameter("normalMap"); myCgFragmentParam_normalizeCube = fragmentProgram.GetNamedParameter("normalizeCube"); myCgFragmentParam_normalizeCube2 = fragmentProgram.GetNamedParameter("normalizeCube2"); myCgFragmentParam_normalMap.SetTexture(texObj[1]); myCgFragmentParam_normalizeCube.SetTexture(texObj[0]); myCgFragmentParam_normalizeCube2.SetTexture(texObj[0]); }
/// <summary> /// Setup OpenGL and load resources here. /// </summary> /// <param name="e">Not used.</param> protected override void OnLoad(EventArgs e) { GL.ClearColor(0.1f, 0.3f, 0.6f, 0.0f); /* Blue background */ GL.PixelStore(PixelStoreParameter.UnpackAlignment, 1); /* Tightly packed texture data. */ GL.Enable(EnableCap.Texture2D); GL.BindTexture(TextureTarget.Texture2D, 666); GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgb8, 128, 128, 0, PixelFormat.Rgb, PixelType.UnsignedByte, ImageDemon.Array); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); this.CgContext = CgNet.Context.Create(); CgGL.SetDebugMode(false); this.CgContext.ParameterSettingMode = ParameterSettingMode.Deferred; vertexProfile = ProfileClass.Vertex.GetLatestProfile(); vertexProfile.SetOptimalOptions(); vertexProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ VertexProgramFileName, /* Name of file containing program */ vertexProfile, /* Profile: OpenGL ARB vertex program */ VertexProgramName, /* Entry function name */ null); /* No extra compiler options */ vertexProgram.Load(); /* No uniform vertex program parameters expected. */ fragmentProfile = ProfileClass.Fragment.GetLatestProfile(); fragmentProfile.SetOptimalOptions(); fragmentProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ FragmentProgramFileName, /* Name of file containing program */ fragmentProfile, /* Profile: OpenGL ARB vertex program */ FragmentProgramName, /* Entry function name */ null); /* No extra compiler options */ fragmentProgram.Load(); this.fragmentParamDecal = fragmentProgram.GetNamedParameter("decal"); this.fragmentParamDecal.SetTexture(666); }
public bool SetSampler(Parameter param) { return NativeMethods.cgSetSamplerStateAssignment(this.Handle, param.Handle); }
public bool SetTexture(Parameter param) { return NativeMethods.cgSetTextureStateAssignment(this.Handle, param.Handle); }
/// <summary> /// Setup OpenGL and load resources here. /// </summary> /// <param name="e">Not used.</param> protected override void OnLoad(EventArgs e) { GL.ClearColor(0.1f, 0.3f, 0.6f, 0.0f); /* Blue background */ GL.Enable(EnableCap.DepthTest); this.CgContext = CgNet.Context.Create(); CgGL.SetDebugMode(false); this.CgContext.ParameterSettingMode = ParameterSettingMode.Deferred; vertexProfile = ProfileClass.Vertex.GetLatestProfile(); vertexProfile.SetOptimalOptions(); vertexProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ vertexProgramFileName, /* Name of file containing program */ vertexProfile, /* Profile: OpenGL ARB vertex program */ vertexProgramName, /* Entry function name */ null); /* No extra compiler options */ vertexProgram.Load(); this.myCgVertexParam_modelViewProj = vertexProgram.GetNamedParameter("modelViewProj"); fragmentProfile = ProfileClass.Fragment.GetLatestProfile(); fragmentProfile.SetOptimalOptions(); /* Specify "color passthrough" fragment program with a string. */ fragmentProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ fragmentProgramFileName, fragmentProfile, /* Profile: latest fragment profile */ fragmentProgramName, /* Entry function name */ null); /* No extra compiler options */ fragmentProgram.Load(); this.myCgFragmentParam_globalAmbient = fragmentProgram.GetNamedParameter("globalAmbient"); this.myCgFragmentParam_lightColor = fragmentProgram.GetNamedParameter("lightColor"); this.myCgFragmentParam_lightPosition = fragmentProgram.GetNamedParameter("lightPosition"); this.myCgFragmentParam_eyePosition = fragmentProgram.GetNamedParameter("eyePosition"); this.myCgFragmentParam_Ke = fragmentProgram.GetNamedParameter("Ke"); this.myCgFragmentParam_Ka = fragmentProgram.GetNamedParameter("Ka"); this.myCgFragmentParam_Kd = fragmentProgram.GetNamedParameter("Kd"); this.myCgFragmentParam_Ks = fragmentProgram.GetNamedParameter("Ks"); this.myCgFragmentParam_shininess = fragmentProgram.GetNamedParameter("shininess"); /* Set light source color parameters once. */ this.myCgFragmentParam_globalAmbient.Set(this.myGlobalAmbient); this.myCgFragmentParam_lightColor.Set(this.myLightColor); }
/// <summary> /// Setup OpenGL and load resources here. /// </summary> /// <param name="e">Not used.</param> protected override void OnLoad(EventArgs e) { this.ResetParticles(); GL.ClearColor(0.2f, 0.6f, 1.0f, 1); /* Blue background */ GL.PointSize(6.0f); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.Enable(EnableCap.PointSmooth); GL.Enable(EnableCap.Blend); GL.Enable(EnableCap.Texture1D); this.CgContext = CgNet.Context.Create(); CgGL.SetDebugMode(false); vertexProfile = ProfileClass.Vertex.GetLatestProfile(); vertexProfile.SetOptimalOptions(); vertexProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ VertexProgramFileName, /* Name of file containing program */ vertexProfile, /* Profile: OpenGL ARB vertex program */ VertexProgramName, /* Entry function name */ null); /* No extra compiler options */ vertexProgram.Load(); this.vertexParamGlobalTime = vertexProgram.GetNamedParameter("globalTime"); this.vertexParamAcceleration = vertexProgram.GetNamedParameter("acceleration"); this.vertexParamModelViewProj = vertexProgram.GetNamedParameter("modelViewProj"); fragmentProfile = ProfileClass.Fragment.GetLatestProfile(); fragmentProfile.SetOptimalOptions(); fragmentProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ FragmentProgramFileName, /* Name of file containing program */ fragmentProfile, /* Profile: OpenGL ARB vertex program */ FragmentProgramName, /* Entry function name */ null); /* No extra compiler options */ fragmentProgram.Load(); }
public static void Connect(Parameter from, Parameter to) { NativeMethods.cgConnectParameter(from.Handle, to.Handle); }
public void Connect(Parameter to) { NativeMethods.cgConnectParameter(this.Handle, to.Handle); }
/// <summary> /// Setup OpenGL and load resources here. /// </summary> /// <param name="e">Not used.</param> protected override void OnLoad(EventArgs e) { GL.ClearColor(0.1f, 0.3f, 0.6f, 0.0f); /* Blue background */ this.CgContext = CgNet.Context.Create(); CgGL.SetDebugMode(false); this.CgContext.ParameterSettingMode = ParameterSettingMode.Deferred; vertexProfile = ProfileClass.Vertex.GetLatestProfile(); vertexProfile.SetOptimalOptions(); vertexProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ VertexProgramFileName, /* Name of file containing program */ vertexProfile, /* Profile: OpenGL ARB vertex program */ VertexProgramName, /* Entry function name */ null); /* No extra compiler options */ vertexProgram.Load(); this.vertexParamConstantColor = vertexProgram.GetNamedParameter("constantColor"); fragmentProfile = ProfileClass.Fragment.GetLatestProfile(); fragmentProfile.SetOptimalOptions(); fragmentProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ FragmentProgramFileName, /* Name of file containing program */ fragmentProfile, /* Profile: OpenGL ARB vertex program */ FragmentProgramName, /* Entry function name */ null); /* No extra compiler options */ fragmentProgram.Load(); }
/// <summary> /// Setup OpenGL and load resources here. /// </summary> /// <param name="e">Not used.</param> protected override void OnLoad(EventArgs e) { GL.ClearColor(0.1f, 0.3f, 0.6f, 0.0f); /* Blue background */ GL.Enable(EnableCap.DepthTest); this.CgContext = CgNet.Context.Create(); CgGL.SetDebugMode(false); this.CgContext.ParameterSettingMode = ParameterSettingMode.Deferred; vertexProfile = ProfileClass.Vertex.GetLatestProfile(); vertexProfile.SetOptimalOptions(); vertexProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ VertexProgramFileName, /* Name of file containing program */ vertexProfile, /* Profile: OpenGL ARB vertex program */ VertexProgramName, /* Entry function name */ null); /* No extra compiler options */ vertexProgram.Load(); this.vertexParamModelViewProj = vertexProgram.GetNamedParameter("modelViewProj"); this.vertexParamTime = vertexProgram.GetNamedParameter("time"); this.vertexParamFrequency = vertexProgram.GetNamedParameter("frequency"); this.vertexParamScaleFactor = vertexProgram.GetNamedParameter("scaleFactor"); this.vertexParamKd = vertexProgram.GetNamedParameter("Kd"); this.vertexParamShininess = vertexProgram.GetNamedParameter("shininess"); this.vertexParamEyePosition = vertexProgram.GetNamedParameter("eyePosition"); this.vertexParamLightPosition = vertexProgram.GetNamedParameter("lightPosition"); this.vertexParamLightColor = vertexProgram.GetNamedParameter("lightColor"); /* Set light source color parameters once. */ this.vertexParamLightColor.Set(myLightColor); this.vertexParamScaleFactor.Set(0.3f); this.vertexParamFrequency.Set(2.4f); this.vertexParamShininess.Set(35f); fragmentProfile = ProfileClass.Fragment.GetLatestProfile(); fragmentProfile.SetOptimalOptions(); fragmentProgram = this.CgContext.CreateProgram( ProgramType.Source, /* Program in human-readable form */ "float4 main(float4 c : COLOR) : COLOR { return c; }", fragmentProfile, /* Profile: OpenGL ARB vertex program */ "main", /* Entry function name */ null); /* No extra compiler options */ fragmentProgram.Load(); /* Specify vertex program for rendering the light source with a string. */ this.lightVertexProgram = this.CgContext.CreateProgram( ProgramType.Source, /* Program in human-readable form */ @"void main(inout float4 p : POSITION, uniform float4x4 modelViewProj, out float4 c : COLOR) { p = mul(modelViewProj, p); c = float4(1,1,0,1); }", vertexProfile, /* Profile: latest fragment profile */ "main", /* Entry function name */ null); /* No extra compiler options */ this.lightVertexProgram.Load(); this.lightVertexParamModelViewProj = this.lightVertexProgram.GetNamedParameter("modelViewProj"); }
/// <summary> /// Setup OpenGL and load resources here. /// </summary> /// <param name="e">Not used.</param> protected override void OnLoad(EventArgs e) { GL.ClearColor(0.1f, 0.1f, 0.1f, 0.0f); GL.Enable(EnableCap.DepthTest); this.CgContext = CgNet.Context.Create(); CgGL.SetDebugMode(false); this.CgContext.ParameterSettingMode = ParameterSettingMode.Deferred; this.CgContext.SetManageTextureParameters(true); vertexProfile = ProfileClass.Vertex.GetLatestProfile(); vertexProfile.SetOptimalOptions(); vertexProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ VertexProgramFileName, /* Name of file containing program */ vertexProfile, /* Profile: OpenGL ARB vertex program */ VertexProgramName, /* Entry function name */ null); /* No extra compiler options */ vertexProgram.Load(); this.myCgVertexParamModelViewProj = vertexProgram.GetNamedParameter("modelViewProj"); this.myCgVertexParamLightPosition = vertexProgram.GetNamedParameter("lightPosition"); this.myCgVertexParamKd = vertexProgram.GetNamedParameter("Kd"); this.myCgVertexParamTextureMatrix = vertexProgram.GetNamedParameter("textureMatrix"); /* Set light source color parameters once. */ this.myCgVertexParamKd.Set(this.kd); fragmentProfile = ProfileClass.Fragment.GetLatestProfile(); fragmentProfile.SetOptimalOptions(); /* Specify "color passthrough" fragment program with a string. */ fragmentProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ FragmentProgramFileName, fragmentProfile, /* Profile: latest fragment profile */ FragmentProgramName, /* Entry function name */ null); /* No extra compiler options */ fragmentProgram.Load(); this.SetupDemonSampler(); }
/// <summary> /// Setup OpenGL and load resources here. /// </summary> /// <param name="e">Not used.</param> protected override void OnLoad(EventArgs e) { GL.ClearColor(0.1f, 0.3f, 0.6f, 0.0f); /* Blue background */ this.CgContext = CgNet.Context.Create(); CgGL.SetDebugMode(false); this.CgContext.ParameterSettingMode = ParameterSettingMode.Deferred; geometryProfile = ProfileType.GlslG; CgGL.SetOptimalOptions(geometryProfile); geometryProgram = Program.CreateFromFile( CgContext, /* Cg runtime context */ ProgramType.Source, /* Program in human-readable form */ GeometryProgramFileName, /* Name of file containing program */ geometryProfile, /* Profile: OpenGL ARB geometry program */ GeometryProgramName, /* Entry function name */ null); /* No extra compiler options */ var x = CgContext.LastListing; vertexProfile = ProfileType.GlslV; vertexProfile.SetOptimalOptions(); vertexProgram = Program.CreateFromFile( CgContext, /* Cg runtime context */ ProgramType.Source, /* Program in human-readable form */ VertexProgramFileName, /* Name of file containing program */ vertexProfile, /* Profile: OpenGL ARB vertex program */ VertexProgramName, /* Entry function name */ null); /* No extra compiler options */ fragmentProfile = ProfileType.GlslF; fragmentProfile.SetOptimalOptions(); fragmentProgram = Program.CreateFromFile( CgContext, /* Cg runtime context */ ProgramType.Source, /* Program in human-readable form */ FragmentProgramFileName, /* Name of file containing program */ fragmentProfile, /* Profile: OpenGL ARB fragment program */ FragmentProgramName, /* Entry function name */ null); /* No extra compiler options */ combinedProgram = Program.Combine(vertexProgram, fragmentProgram, geometryProgram); combinedProgram.Load(); Debug.Assert(combinedProgram.DomainsCount == 3); vertexProgram.Dispose(); geometryProgram.Dispose(); fragmentProgram.Dispose(); paramShrinkFactor = combinedProgram.GetNamedParameter("shrinkFactor"); }
/// <summary> /// Setup OpenGL and load resources here. /// </summary> /// <param name="e">Not used.</param> protected override void OnLoad(EventArgs e) { GL.ClearColor(0.1f, 0.3f, 0.6f, 0.0f); /* Blue background */ this.CgContext = CgNet.Context.Create(); CgGL.SetDebugMode(false); this.CgContext.ParameterSettingMode = ParameterSettingMode.Deferred; vertexProfile = ProfileClass.Vertex.GetLatestProfile(); vertexProfile.SetOptimalOptions(); vertexProgram = this.CgContext.CreateProgramFromFile( ProgramType.Source, /* Program in human-readable form */ VertexProgramFileName, /* Name of file containing program */ vertexProfile, /* Profile: OpenGL ARB vertex program */ VertexProgramName, /* Entry function name */ null); /* No extra compiler options */ vertexProgram.Load(); this.vertexParamModelViewProj = vertexProgram.GetNamedParameter("modelViewProj"); fragmentProfile = ProfileClass.Fragment.GetLatestProfile(); fragmentProfile.SetOptimalOptions(); /* Specify fragment program with a string. */ fragmentProgram = this.CgContext.CreateProgram( ProgramType.Source, /* Program in human-readable form */ "float4 main(uniform float4 c) : COLOR { return c; }", fragmentProfile, /* Profile: latest fragment profile */ "main", /* Entry function name */ null); /* No extra compiler options */ fragmentProgram.Load(); this.fragmentParamC = fragmentProgram.GetNamedParameter("c"); }