欢迎来到天天文库
浏览记录
ID:57650545
大小:64.50 KB
页数:7页
时间:2020-08-30
《一个简单的Cg程序示例.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、OpenGL中如何应用Cg可编程管线一、如何在OpenGL用调用Cg程序第一步:在项目设置的附加包含目录中添加C:ProgramFilesNVIDIACorporationCginclude在附加库目录中添加C:ProgramFilesNVIDIACorporationCglib在附加依赖项中添加cg.libcgGL.lib在程序中添加代码:#include#include#include第二步:在程序中添加如下代码:staticCGcontextmy_context;staticCGprofil
2、emy_vertex_profile,my_fragment_profile;staticCGprogrammy_vertex_program,my_fragment_program;//注意myVertexProgramName和myFragmentProgramName必须与文件中的主函数同名constchar*my_vectex_prog_filename="vert_shader.cg",*myVertexProgramName="vertshader";constchar*my_fragment_prog_filename="frag_shader.cg",*my
3、FragmentProgramName="frag_shader";添加如下函数:staticvoidcheckForCgError(constchar*situation){CGerrorerror;constchar*string=cgGetLastErrorString(&error);if(error!=CG_NO_ERROR){printf("%s:%s",situation,string);if(error==CG_COMPILER_ERROR){printf("%s",cgGetLastListing(my_context));}exit(1);}}s
4、taticvoidsetProfile(){my_context=cgCreateContext();checkForCgError("creatingcontext");cgGLSetDebugMode(CG_FALSE);cgSetParameterSettingMode(my_context,CG_DEFERRED_PARAMETER_SETTING);my_vertex_profile=cgGLGetLatestProfile(CG_GL_VERTEX);cgGLSetOptimalOptions(my_vertex_profile);checkForCgError
5、("selectingvertexprofile");my_vertex_program=cgCreateProgramFromFile(my_context,/*Cgruntimecontext*/CG_SOURCE,/*Programinhuman-readableform*/my_vectex_prog_filename,/*Nameoffilecontainingprogram*/my_vertex_profile,/*Profile:OpenGLARBvertexprogram*/myVertexProgramName,/*Entryfunctionname*/N
6、ULL);/*Noextracompileroptions*/checkForCgError("creatingvertexprogramfromfile");cgGLLoadProgram(my_vertex_program);checkForCgError("loadingvertexprogram");my_fragment_profile=cgGLGetLatestProfile(CG_GL_FRAGMENT);cgGLSetOptimalOptions(my_fragment_profile);checkForCgError("selectingfragmentp
7、rofile");my_fragment_program=cgCreateProgramFromFile(my_context,CG_SOURCE,my_fragment_prog_filename,my_fragment_profile,myFragmentProgramName,NULL);checkForCgError("creatingfragmentprogramfromfile");cgGLLoadProgram(my_fragment_program);checkForCgError("loading
此文档下载收益归作者所有