Two Methods of Multitexture In Cg
2005-09-22 16:19
513 查看
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
// 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
相关文章推荐
- Two Methods of Multitexture In Cg
- Two methods of starting service in Android
- A example code of multithread communication in Python
- Python example of SSH in multi-threads
- Calculate difference between two dates (number of days) in C#?
- Ten Ways to Check if an Integer Is a Power Of Two in C
- two or more data types in declaration of
- Methods of quick exploitation of blind SQL Injection Vulnerabilities in Oracle
- Maximum XOR of Two Numbers in an Array问题及解法
- error: two or more data types in declaration of 'main'
- A meta-model for the analysis and design of organizations in multi-agent systems
- While starting out of two DBs one DB getting error: ORA-01102: cannot mount database in EXCLUSIVE mo
- change poisition of two word in a string
- Using two methods for recognition common carotid artery of B-mode longitudinal ultrasound image
- two or more data types in declaration of `函数名'的报错
- [置顶] 【计算机视觉】《Light-Head R-CNN: In Defense of Two-Stage Object Detector》
- 前缀树及应用两数异或Leetcode之 Maximum XOR of Two Numbers in an Array
- Maximum XOR of Two Numbers in an Array
- Ten Ways to Check if an Integer Is a Power Of Two in C
- Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years