⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bumpref.c

📁 这是一个相当棒的Linux下的台球游戏
💻 C
📖 第 1 页 / 共 4 页
字号:
                    GL_RGB /* component usage */);    glCombinerInputNV(GL_COMBINER2_NV,                    GL_RGB,                    GL_VARIABLE_D_NV,                    GL_SPARE1_NV/* input */,                    GL_UNSIGNED_INVERT_NV,                    GL_RGB /* component usage */);    // combiner stage 3    // spare0 = expand(col0) . expand(tex1);    // spare1 = expand(col1) . expand(tex1);    glCombinerOutputNV(GL_COMBINER3_NV,                     GL_RGB,                     GL_SPARE0_NV,                     GL_SPARE1_NV,                     GL_DISCARD_NV /* discard */,                     GL_NONE /* scale */,                     GL_NONE /* bias */,                     GL_TRUE /* dotprod ab */,                     GL_TRUE /* dotprod cd */,                     GL_FALSE /* sum discarded anyway */);    glCombinerInputNV(GL_COMBINER3_NV,                    GL_RGB,                    GL_VARIABLE_A_NV,                    GL_PRIMARY_COLOR_NV/* input */,                    GL_SIGNED_IDENTITY_NV,                    GL_RGB /* component usage */);    glCombinerInputNV(GL_COMBINER3_NV,                    GL_RGB,                    GL_VARIABLE_B_NV,                    GL_TEXTURE1_ARB/* input */,                    GL_EXPAND_NORMAL_NV,                    GL_RGB /* component usage */);    glCombinerInputNV(GL_COMBINER3_NV,                    GL_RGB,                    GL_VARIABLE_C_NV,                    GL_SECONDARY_COLOR_NV/* input */,                    GL_SIGNED_IDENTITY_NV,                    GL_RGB /* component usage */);    glCombinerInputNV(GL_COMBINER3_NV,                    GL_RGB,                    GL_VARIABLE_D_NV,                    GL_TEXTURE1_ARB/* input */,                    GL_EXPAND_NORMAL_NV,                    GL_RGB /* component usage */);    // combiner stage 4    // spare1 = unsigned(spare1) * unsigned(spare1);    glCombinerOutputNV(GL_COMBINER4_NV,                     GL_RGB,                     GL_SPARE1_NV,                     GL_DISCARD_NV,/* discard 2nd prod */                     GL_DISCARD_NV /* discard sum */,                     GL_NONE /* scale */,                     GL_NONE /* bias */,                     GL_FALSE /* dotprod ab */,                     GL_TRUE /* discarded anyway */,                     GL_FALSE /* sum discarded anyway */);    glCombinerInputNV(GL_COMBINER4_NV,                    GL_RGB,                    GL_VARIABLE_A_NV,                    GL_SPARE1_NV/* input */,                    GL_UNSIGNED_IDENTITY_NV,                    GL_RGB /* component usage */);    glCombinerInputNV(GL_COMBINER4_NV,                    GL_RGB,                    GL_VARIABLE_B_NV,                    GL_SPARE1_NV/* input */,                    GL_UNSIGNED_IDENTITY_NV,                    GL_RGB /* component usage */);    // combiner stage 5    // spare1 = unsigned(spare1) * unsigned(spare1);    glCombinerOutputNV(GL_COMBINER5_NV,                     GL_RGB,                     GL_SPARE1_NV,                     GL_DISCARD_NV,/* discard 2nd prod */                     GL_DISCARD_NV /* discard sum */,                     GL_NONE /* scale */,                     GL_NONE /* bias */,                     GL_FALSE /* dotprod ab */,                     GL_TRUE /* discarded anyway */,                     GL_FALSE /* sum discarded anyway */);    glCombinerInputNV(GL_COMBINER5_NV,                    GL_RGB,                    GL_VARIABLE_A_NV,                    GL_SPARE1_NV /* input */,                    GL_UNSIGNED_IDENTITY_NV,                    GL_RGB /* component usage */);    glCombinerInputNV(GL_COMBINER5_NV,                    GL_RGB,                    GL_VARIABLE_B_NV,                    GL_SPARE1_NV /* input */,                    GL_UNSIGNED_IDENTITY_NV,                    GL_RGB /* component usage */);    // combiner stage 6    // spare1 = unsigned(spare1) * unsigned(spare1);    glCombinerOutputNV(GL_COMBINER6_NV,                     GL_RGB,                     GL_SPARE1_NV,                     GL_DISCARD_NV,/* discard 2nd prod */                     GL_DISCARD_NV /* discard sum */,                     GL_NONE /* scale */,                     GL_NONE /* bias */,                     GL_FALSE /* dotprod ab */,                     GL_TRUE /* discarded anyway */,                     GL_FALSE /* sum discarded anyway */);    glCombinerInputNV(GL_COMBINER6_NV,                    GL_RGB,                    GL_VARIABLE_A_NV,                    GL_SPARE1_NV /* input */,                    GL_UNSIGNED_IDENTITY_NV,                      GL_RGB /* component usage */);    glCombinerInputNV(GL_COMBINER6_NV,                    GL_RGB,                    GL_VARIABLE_B_NV,                    GL_SPARE1_NV /* input */,                    GL_UNSIGNED_IDENTITY_NV,                      GL_RGB /* component usage */);    // combiner stage 7    // spare1 = unsigned(spare1) * unsigned(spare1);    glCombinerOutputNV(GL_COMBINER7_NV,                     GL_RGB,                     GL_SPARE1_NV,                     GL_DISCARD_NV,/* discard 2nd prod */                     GL_DISCARD_NV /* discard sum */,                     GL_NONE /* scale */,                     GL_NONE /* bias */,                     GL_FALSE /* dotprod ab */,                     GL_TRUE /* discarded anyway */,                     GL_FALSE /* sum discarded anyway */);    glCombinerInputNV(GL_COMBINER7_NV,                    GL_RGB,                    GL_VARIABLE_A_NV,                    GL_SPARE1_NV /* input */,                    GL_UNSIGNED_IDENTITY_NV,                      GL_RGB /* component usage */);    glCombinerInputNV(GL_COMBINER7_NV,                    GL_RGB,                    GL_VARIABLE_B_NV,                    GL_SPARE1_NV /* input */,                    GL_UNSIGNED_IDENTITY_NV,                      GL_RGB /* component usage */);    //  final_product = const0 * spare1;    glFinalCombinerInputNV(GL_VARIABLE_E_NV,                           GL_SPARE1_NV,                           GL_UNSIGNED_IDENTITY_NV,                           GL_RGB);    glFinalCombinerInputNV(GL_VARIABLE_F_NV,                           GL_CONSTANT_COLOR0_NV,                           GL_UNSIGNED_IDENTITY_NV,                           GL_RGB);    glFinalCombinerInputNV(GL_VARIABLE_D_NV,                           GL_E_TIMES_F_NV,//                           GL_ZERO,  /* dont use specular */                           GL_UNSIGNED_IDENTITY_NV,                           GL_RGB);    // out.rgb = spare0 * const1 + final_product;    glFinalCombinerInputNV(GL_VARIABLE_A_NV,                           GL_SPARE0_NV,                           GL_UNSIGNED_IDENTITY_NV,                           GL_RGB);    glFinalCombinerInputNV(GL_VARIABLE_B_NV,                           GL_CONSTANT_COLOR1_NV,                           GL_UNSIGNED_IDENTITY_NV,                           GL_RGB);    glFinalCombinerInputNV(GL_VARIABLE_C_NV,                           GL_ZERO,                           GL_UNSIGNED_IDENTITY_NV,                           GL_RGB);/*    glFinalCombinerInputNV(GL_VARIABLE_D_NV,                           GL_ZERO,                           GL_UNSIGNED_IDENTITY_NV,                           GL_RGB);*/  /* already set by final product */    glFinalCombinerInputNV(GL_VARIABLE_G_NV,                           GL_CONSTANT_COLOR0_NV,                           GL_UNSIGNED_IDENTITY_NV,                           GL_ALPHA);#endif    glEndList();    bumpref.normalmap_bind = bump_create_bumpmap( map_name, strength );    /* default values */    bumpref.bump_light[0] = 0.0;    bumpref.bump_light[1] = 0.0;    bumpref.bump_light[2] = 0.0;    bumpref.bump_diff_col[0] = 0.5;    bumpref.bump_diff_col[1] = 0.0;    bumpref.bump_diff_col[2] = 0.0;    bumpref.bump_diff_col[3] = 1.0;    bumpref.bump_spec_col[0] = 0.8;    bumpref.bump_spec_col[1] = 0.8;    bumpref.bump_spec_col[2] = 0.8;    bumpref.bump_spec_col[3] = 1.0;    bumpref.init=1;    return(bumpref);#endif}void bump_set_light( BumpRefType * bumpref, float x, float y, float z ){#ifdef USE_NV_BUMPREF    bumpref->bump_light[0]=x;    bumpref->bump_light[1]=y;    bumpref->bump_light[2]=z;    glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 9, bumpref->bump_light[0], bumpref->bump_light[1], bumpref->bump_light[2], 1.0);  /* some light pos */#endif}void bump_set_diff( BumpRefType * bumpref, float r, float g, float b ){#ifdef USE_NV_BUMPREF    bumpref->bump_diff_col[0]=r;    bumpref->bump_diff_col[1]=g;    bumpref->bump_diff_col[2]=b;    bumpref->bump_diff_col[3]=1.0;    glCombinerParameterfvNV(GL_CONSTANT_COLOR0_NV, bumpref->bump_diff_col);#endif}void bump_set_spec( BumpRefType * bumpref, float r, float g, float b ){#ifdef USE_NV_BUMPREF    bumpref->bump_spec_col[0]=r;    bumpref->bump_spec_col[1]=g;    bumpref->bump_spec_col[2]=b;    bumpref->bump_spec_col[3]=1.0;    glCombinerParameterfvNV(GL_CONSTANT_COLOR0_NV, bumpref->bump_spec_col);#endif}void bump_use( BumpRefType * bumpref ){#ifdef USE_NV_BUMPREF/*    double sin_,cos_;    static double phi=0.0;*///    glCombinerParameteriNV(GL_NUM_GENERAL_COMBINERS_NV,8);    glCallList(bumpref->bumpref_list);    glEnable(GL_REGISTER_COMBINERS_NV);    glDisable(GL_TEXTURE_SHADER_NV);    glEnable(GL_VERTEX_PROGRAM_NV);    {/*        float const0[4]={0.5,0.5,0.5,1.0};        float const1[4]={0.0,0.0,0.0,1.0};*/        glCombinerParameterfvNV( GL_CONSTANT_COLOR0_NV, bumpref->bump_spec_col );        glCombinerParameterfvNV( GL_CONSTANT_COLOR1_NV, bumpref->bump_diff_col );    }    DPRINTF("light=%f %f %f\n", bumpref->bump_light[0], bumpref->bump_light[1], bumpref->bump_light[2]);    glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 9, bumpref->bump_light[0], bumpref->bump_light[1], bumpref->bump_light[2], 1.0);  /* some light pos */    /* normalmap to tex1 */    glActiveTextureARB(GL_TEXTURE1_ARB);    glEnable(GL_TEXTURE_2D);    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);    glBindTexture(GL_TEXTURE_2D, bumpref->normalmap_bind);    glActiveTextureARB(GL_TEXTURE0_ARB);    glEnable(GL_TEXTURE_2D);    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);    glPolygonOffset( 0.0, -2.0 );    glEnable( GL_POLYGON_OFFSET_FILL );#endif}void bump_restore(){#ifdef USE_NV_BUMPREF    glDisable(GL_REGISTER_COMBINERS_NV);    glDisable(GL_TEXTURE_SHADER_NV);    glDisable(GL_VERTEX_PROGRAM_NV);/*    glActiveTextureARB(GL_TEXTURE3_ARB);    glDisable(GL_TEXTURE_CUBE_MAP_ARB);    glDisable(GL_TEXTURE_2D);    glActiveTextureARB(GL_TEXTURE2_ARB);    glDisable(GL_TEXTURE_CUBE_MAP_ARB);    glDisable(GL_TEXTURE_2D);*/    glActiveTextureARB(GL_TEXTURE1_ARB);//    glDisable(GL_TEXTURE_CUBE_MAP_ARB);    glDisable(GL_TEXTURE_2D);    glActiveTextureARB(GL_TEXTURE0_ARB);//    glDisable(GL_TEXTURE_CUBE_MAP_ARB);    glEnable(GL_TEXTURE_2D);    glActiveTextureARB(GL_TEXTURE0_ARB);    glDisable( GL_POLYGON_OFFSET_FILL );#endif}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -