Method 1: Using OpenGL's native multi-texture support (using semantics)
// In C++ File:
// Identify the textures to use for the pixel shader...
cgGLSetTextureParameter( g_CGparam_testTexture, g_testTextureID );
cgGLSetTextureParameter( g_CGparam_checkerTexture, g_checkerTextureID );
// STAGE 0
glActiveTextureARB( GL_TEXTURE0_ARB );
glBindTexture( GL_TEXTURE_2D, g_testTextureID );
// STAGE 1
glActiveTextureARB( GL_TEXTURE1_ARB );
glBindTexture( GL_TEXTURE_2D, g_checkerTextureID );
cgGLBindProgram( g_CGprogram_pixel );
cgGLEnableProfile( g_CGprofile_pixel );
// Draw primitives
cgGLDisableProfile( g_CGprofile_pixel );
// In Cg File:
uniform sampler2D testTexture : TEXUNIT0,
uniform sampler2D checkerTexture : TEXUNIT1
Method 2: Using Cg's special texture functions:cgGLSetTextureParameter, cgGLEnableTextureParameter, and cgGLDisableTextureParameter
// In C++ File:
g_CGparam_testTexture = cgGetNamedParameter(g_CGprogram_pixel, "testTexture");
g_CGparam_checkerTexture = cgGetNamedParameter(g_CGprogram_pixel, "checkerTexture");
// Identify the textures to use for the pixel shader...
cgGLSetTextureParameter( g_CGparam_testTexture, g_testTextureID );
cgGLSetTextureParameter( g_CGparam_checkerTexture, g_checkerTextureID );
cgGLBindProgram( g_CGprogram_pixel );
cgGLEnableProfile( g_CGprofile_pixel );
cgGLEnableTextureParameter( g_CGparam_testTexture );
cgGLEnableTextureParameter( g_CGparam_checkerTexture );
// Draw primitives
cgGLDisableTextureParameter( g_CGparam_checkerTexture );
cgGLDisableTextureParameter( g_CGparam_testTexture );
cgGLDisableProfile( g_CGprofile_pixel );
// In Cg File:
uniform sampler2D testTexture,
uniform sampler2D checkerTexture
博客介绍了两种实现多纹理支持的方法。方法一是利用OpenGL原生多纹理支持,通过C++和Cg文件设置纹理参数;方法二则是使用Cg的特殊纹理函数,同样在C++和Cg文件中进行纹理参数的设置、启用和禁用等操作。
1732

被折叠的 条评论
为什么被折叠?



