Пример #1
0
void init(void)
{
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glViewport(0,0,screen_width,screen_height);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0f,(GLfloat)screen_width/(GLfloat)screen_height,0.0f,100.0f);

    glLightfv (GL_LIGHT1, GL_AMBIENT, light_ambient);
    glLightfv (GL_LIGHT1, GL_DIFFUSE, light_diffuse);
    glLightfv (GL_LIGHT1, GL_DIFFUSE, light_specular);
    glLightfv (GL_LIGHT1, GL_POSITION, light_position);
    glEnable (GL_LIGHT1);
    glEnable (GL_LIGHTING);

    glMaterialfv (GL_FRONT, GL_AMBIENT, mat_ambient);
    glMaterialfv (GL_FRONT, GL_DIFFUSE, mat_diffuse);
    glMaterialfv (GL_FRONT, GL_DIFFUSE, mat_specular);
    glMaterialfv (GL_FRONT, GL_POSITION, mat_shininess);

    glShadeModel(GL_SMOOTH);
    glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Texture mapping perspective correction (OpenGL... thank you so much!)
    glEnable(GL_TEXTURE_2D);                            // Texture mapping ON
    glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);         // Polygon rasterization mode (polygon filled)
    glEnable(GL_CULL_FACE);                             // Enable the back face culling
    glEnable(GL_DEPTH_TEST);                            // Enable the depth test (also called z buffer)


    ObjLoad ("smokeSphereSmall.3ds","skull.bmp");



    GLfloat textureMapID = 510;
    GLuint  vboID        = 510;



//////////////////////////////////////////////////////_______GLOBALS_______///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////_______GLOBALS_______///////////////////////////////////////////////////////////

    system("MKDIR smokeSphereSmall");

    ofstream out_vboGlobals("smokeSphereSmall/smokeSphereSmall_vboGlobals.cpp");
    out_vboGlobals << "GLuint  smokeSphereSmall_vboID   =  " << vboID <<" ;"                               << "\n\n";
    out_vboGlobals << "GLuint  smokeSphereSmall_SHADER;"                                                   << "\n";
    out_vboGlobals << "GLuint  smokeSphereSmall_SHADER_Vertex;"                                            << "\n";
    out_vboGlobals << "GLuint  smokeSphereSmall_SHADER_Fragment;"                                          << "\n\n";

    out_vboGlobals << "#include \"smokeSphereSmall_VERT.cpp\""                                            << "\n";
    out_vboGlobals << "#include \"smokeSphereSmall_NORM.cpp\""                                            << "\n";
    out_vboGlobals << "#include \"smokeSphereSmall_TEX.cpp\""                                             << "\n";

    out_vboGlobals << "GLfloat lightPos_smokeSphereSmall[]               =  {0.132818, 30.1442, -4.0103};"<< "\n";
    out_vboGlobals << "GLfloat lightAttenuation_smokeSphereSmall         =   0.774731;"                   << "\n\n";
    out_vboGlobals << "GLfloat MaterialShininess_smokeSphereSmall        =  16.7859;"                     << "\n\n";

    out_vboGlobals << "GLfloat rotation_AXIS_smokeSphereSmall[]          =  {1.0, 1.0, 1.0};"             << "\n";
    out_vboGlobals << "GLfloat smokeSphereSmall_POSITION[]               =  {0.0, 0.0, 0.0};"             << "\n";

    out_vboGlobals << "GLfloat     smokeSphereSmall_counter              = 0;"                            << "\n";
    out_vboGlobals << "GLuint      UNIFORM_counter_smokeSphereSmall;"                                     << "\n\n";

    out_vboGlobals << "GLfloat     LightAmbient_smokeSphereSmall[]       = { 1.0f, 1.0f, 1.0f, 1.0f};"    << "\n";
    out_vboGlobals << "GLfloat     LightDiffuse_smokeSphereSmall[]       = { 1.0f, 1.0f, 1.0f, 1.0f};"    << "\n";
    out_vboGlobals << "GLfloat     LightSpecular_smokeSphereSmall[]      = { 1.0f, 1.0f, 1.0f, 1.0f};"    << "\n";
    out_vboGlobals << "GLfloat     MaterialAmbient_smokeSphereSmall[]    = { 1.0f, 1.0f, 1.0f, 1.0f};"    << "\n";
    out_vboGlobals << "GLfloat     MaterialDiffuse_smokeSphereSmall[]    = { 1.0f, 1.0f, 1.0f, 1.0f};"    << "\n";
    out_vboGlobals << "GLfloat     MaterialEmission_smokeSphereSmall[]   = { 1.0f, 1.0f, 1.0f, 1.0f};"    << "\n";
    out_vboGlobals << "GLfloat     MaterialSpecular_smokeSphereSmall[]   = { 0.0, 0, 0};"                 << "\n";


    out_vboGlobals << "GLfloat     scalesmokeSphereSmallShadowY[]            = {1.26801, 0.0, 1.26801};"  << "\n";
//////////////////////////////////////////////////////_______GLOBALS_______///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////_______GLOBALS_______///////////////////////////////////////////////////////////
    //---------------------------------------------
//////////////////////////////////////////////////////________INIT_______///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////________INIT_______///////////////////////////////////////////////////////////
    ofstream out_vboInit("smokeSphereSmall/smokeSphereSmall_vboInit.cpp");

    out_vboInit << "glGenBuffersARB(1, &smokeSphereSmall_vboID);" << "\n";
    out_vboInit << "glBindBufferARB(GL_ARRAY_BUFFER_ARB, smokeSphereSmall_vboID);" << "\n";
    out_vboInit << "glBufferDataARB(GL_ARRAY_BUFFER_ARB,       sizeof(smokeSphereSmall_VERT) + sizeof(smokeSphereSmall_NORM) + sizeof(smokeSphereSmall_TEX), 0, GL_STATIC_DRAW_ARB);" << "\n";
    out_vboInit << "glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, sizeof(smokeSphereSmall_VERT), smokeSphereSmall_VERT);" << "\n";
    out_vboInit << "glBufferSubDataARB(GL_ARRAY_BUFFER_ARB,    sizeof(smokeSphereSmall_VERT),  sizeof(smokeSphereSmall_NORM), smokeSphereSmall_NORM);" << "\n";
    out_vboInit << "glBufferSubDataARB(GL_ARRAY_BUFFER_ARB,    sizeof(smokeSphereSmall_VERT) + sizeof(smokeSphereSmall_NORM), sizeof(smokeSphereSmall_TEX), smokeSphereSmall_TEX);" << "\n\n";

    out_vboInit << "    loadTexture(\"_MODEL_FOLDERS_/smokeSphereSmall/smokeSphereSmall.jpg\",      textureMap[" << textureMapID << "]);"   << "\n";
    out_vboInit << "    loadTexture(\"_MODEL_FOLDERS_/smokeSphereSmall/smokeSphereSmall_DOT3.bmp\", normalMap[" << textureMapID << "]);" << "\n\n";
    out_vboInit << "    //loadTexture(\"_MODEL_FOLDERS_/smokeSphereSmall/smokeSphereSmall_BUMP.jpg\", specularMap[" << textureMapID << "]);"   << "\n";
//////////////////////////////////////////////////////________INIT_______///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////________INIT_______///////////////////////////////////////////////////////////
    //---------------------------------------------
/////////////////////////////////////////////////////_____SHADER_SETUP_____//////////////////////////////////////////////////////////
/////////////////////////////////////////////////////_____SHADER_SETUP_____//////////////////////////////////////////////////////////
    ofstream out_SHADER_INIT("smokeSphereSmall/smokeSphereSmall_shaderInit.cpp");

    out_SHADER_INIT << "    const char *smokeSphereSmall_SHADER_VertexStrings[1];" << "\n";
    out_SHADER_INIT << "    const char *smokeSphereSmall_SHADER_FragmentStrings[1];" << "\n\n";

    out_SHADER_INIT << "    smokeSphereSmall_SHADER_Vertex = glCreateShaderObjectARB( GL_VERTEX_SHADER_ARB );" << "\n\n";

    out_SHADER_INIT << "	 unsigned char *smokeSphereSmall_SHADER_VertexAssembly   = readShaderFile( \"_MODEL_FOLDERS_/smokeSphereSmall/smokeSphereSmall.vert\" );" << "\n";
    out_SHADER_INIT << "    smokeSphereSmall_SHADER_VertexStrings[0] = (char*)smokeSphereSmall_SHADER_VertexAssembly;" << "\n";
    out_SHADER_INIT << "    glShaderSourceARB( smokeSphereSmall_SHADER_Vertex, 1, smokeSphereSmall_SHADER_VertexStrings, NULL );" << "\n";
    out_SHADER_INIT << "    glCompileShaderARB( smokeSphereSmall_SHADER_Vertex);" << "\n";
    out_SHADER_INIT << "    delete smokeSphereSmall_SHADER_VertexAssembly;" << "\n\n";

    out_SHADER_INIT << "    smokeSphereSmall_SHADER_Fragment = glCreateShaderObjectARB( GL_FRAGMENT_SHADER_ARB );" << "\n\n";

    out_SHADER_INIT << "    unsigned char *smokeSphereSmall_SHADER_FragmentAssembly = readShaderFile( \"_MODEL_FOLDERS_/smokeSphereSmall/smokeSphereSmall.frag\" );" << "\n";
    out_SHADER_INIT << "    smokeSphereSmall_SHADER_FragmentStrings[0] = (char*)smokeSphereSmall_SHADER_FragmentAssembly;" << "\n";
    out_SHADER_INIT << "    glShaderSourceARB( smokeSphereSmall_SHADER_Fragment, 1, smokeSphereSmall_SHADER_FragmentStrings, NULL );" << "\n";
    out_SHADER_INIT << "    glCompileShaderARB( smokeSphereSmall_SHADER_Fragment );" << "\n\n";

    out_SHADER_INIT << "    delete smokeSphereSmall_SHADER_FragmentAssembly;" << "\n\n";

    out_SHADER_INIT << "	 smokeSphereSmall_SHADER = glCreateProgramObjectARB();" << "\n\n";
    out_SHADER_INIT << "    glAttachObjectARB( smokeSphereSmall_SHADER, smokeSphereSmall_SHADER_Vertex );" << "\n";
    out_SHADER_INIT << "    glAttachObjectARB( smokeSphereSmall_SHADER, smokeSphereSmall_SHADER_Fragment );" << "\n\n";

    out_SHADER_INIT << "    glLinkProgramARB(smokeSphereSmall_SHADER); " << "\n\n";

    out_SHADER_INIT << "    UNIFORM_counter_smokeSphereSmall = glGetUniformLocationARB( smokeSphereSmall_SHADER, \"counter\" );" << "\n\n";

/////////////////////////////////////////////////////_____SHADER_SETUP_____//////////////////////////////////////////////////////////
/////////////////////////////////////////////////////_____SHADER_SETUP_____//////////////////////////////////////////////////////////
    //---------------------------------------------
//////////////////////////////////////////////////////_______RENDER_______///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////_______RENDER_______///////////////////////////////////////////////////////////
    ofstream out_vboRender("smokeSphereSmall/smokeSphereSmall_vboRender.cpp");

    //out_vboRender << "          glPushMatrix();                                                                                      "                       << "\n";
    out_vboRender << "              glTranslatef(moveSet[0], moveSet[1], moveSet[2]);                                                "                       << "\n";
    out_vboRender << "              glTranslatef(smokeSphereSmall_POSITION[0], smokeSphereSmall_POSITION[1], smokeSphereSmall_POSITION[2]);"                       << "\n";
    out_vboRender << "              glRotatef(spinFloat,rotation_AXIS_smokeSphereSmall[0], rotation_AXIS_smokeSphereSmall[1], rotation_AXIS_smokeSphereSmall[2]);" << "\n\n";

    out_vboRender << "              glPushMatrix();"                                                                                                   << "\n";
    out_vboRender << "                   glLoadIdentity();"                                                                                            << "\n";
    out_vboRender << "                   //_ADDITIONAL_ROTATIONS_GO_HERE"                                                                              << "\n";
    out_vboRender << "                   glRotatef(-look_LEFT_RIGHT, 0, -1, 0);"                                                                       << "\n";
    out_vboRender << "                   glTranslatef(-eyePosition[0],-eyePosition[1],-eyePosition[2]);"                                               << "\n";
    out_vboRender << "                   glLightfv(GL_LIGHT0,GL_POSITION,lightPos_smokeSphereSmall);"                                                      << "\n";
    out_vboRender << "                   glLightf (GL_LIGHT0, GL_QUADRATIC_ATTENUATION, lightAttenuation_smokeSphereSmall);"                               << "\n";
    out_vboRender << "              glPopMatrix();"                                                                                                    << "\n\n";
    //out_vboRender << "          glPopMatrix();                                                                                      "                       << "\n";
    out_vboRender << "              glUseProgramObjectARB(smokeSphereSmall_SHADER);"                                                                       << "\n\n\n";
    out_vboRender << "              glBindBufferARB(GL_ARRAY_BUFFER_ARB, smokeSphereSmall_vboID);"                                                         << "\n\n\n";
    out_vboRender << "              glLightfv(GL_LIGHT0, GL_AMBIENT,     LightAmbient_smokeSphereSmall);"                                                  << "\n";
    out_vboRender << "              glLightfv(GL_LIGHT0, GL_DIFFUSE,     LightDiffuse_smokeSphereSmall);"                                                  << "\n";
    out_vboRender << "              glLightfv(GL_LIGHT0, GL_SPECULAR,    LightSpecular_smokeSphereSmall);"                                                 << "\n";
    out_vboRender << "              glMaterialfv(GL_FRONT, GL_AMBIENT,   MaterialAmbient_smokeSphereSmall);"                                               << "\n";
    out_vboRender << "              glMaterialfv(GL_FRONT, GL_DIFFUSE,   MaterialDiffuse_smokeSphereSmall);"                                               << "\n";
    out_vboRender << "              glMaterialfv(GL_FRONT, GL_EMISSION,  MaterialEmission_smokeSphereSmall);"                                              << "\n";
    out_vboRender << "              glMaterialfv(GL_FRONT, GL_SPECULAR,  MaterialSpecular_smokeSphereSmall);"                                              << "\n";
    out_vboRender << "              glMaterialf(GL_FRONT, GL_SHININESS,  MaterialShininess_smokeSphereSmall);"                                             << "\n\n";

    out_vboRender << "              glUniform1fARB( UNIFORM_counter_smokeSphereSmall, smokeSphereSmall_counter);"<< "\n\n";

    out_vboRender << "              glEnableClientState(GL_TEXTURE_COORD_ARRAY );"                                                                     << "\n";
    out_vboRender << "              glEnableClientState(GL_NORMAL_ARRAY);"                                                                             << "\n";
    out_vboRender << "              glEnableClientState(GL_VERTEX_ARRAY);"                                                                             << "\n";

    out_vboRender << "              glTexCoordPointer(3, GL_FLOAT, 0, (void*)(sizeof(smokeSphereSmall_VERT) + sizeof(smokeSphereSmall_NORM)));"          << "\n";
    out_vboRender << "              glNormalPointer(GL_FLOAT, 0, (void*)sizeof(smokeSphereSmall_VERT));"                                                << "\n";
    out_vboRender << "              glVertexPointer(3, GL_FLOAT, 0, 0);"                                                                               << "\n\n";


    out_vboRender << "              SHADOW_MAP_textureID;"                                                                                             << "\n";
    out_vboRender << "              SHADOW_MAP_textureID = glGetUniformLocationARB(treeBarkPath_SHADER,\"ShadowMap\");"                                << "\n";
    out_vboRender << "              glUniform1iARB(SHADOW_MAP_textureID, 2);"                                                                          << "\n";
    out_vboRender << "              glActiveTextureARB(GL_TEXTURE2_ARB);"                                                                               << "\n ";
    out_vboRender << "              glBindTexture(GL_TEXTURE_2D,  textureMap[299]);"                                                                    << "\n\n";


    out_vboRender << "              DOT3_textureID     = glGetUniformLocationARB(smokeSphereSmall_SHADER,\"NormalMap\");"                                << "\n";
    out_vboRender << "              glUniform1iARB(DOT3_textureID, 1);"                                                                                << "\n";
    out_vboRender << "              glActiveTextureARB(GL_TEXTURE1_ARB);"                                                                              << "\n";
    out_vboRender << "              glBindTexture(GL_TEXTURE_2D,  normalMap[" << textureMapID << "]);"                                                 << "\n\n";


    out_vboRender << "              textureID     = glGetUniformLocationARB(smokeSphereSmall_SHADER,\"Texture1\");"                                     << "\n";
    out_vboRender << "              glUniform1iARB(textureID, 0);"                                                                                     << "\n";
    out_vboRender << "              glActiveTextureARB(GL_TEXTURE0_ARB);"                                                                              << "\n";
    out_vboRender << "              glBindTexture(GL_TEXTURE_2D, textureMap[" << textureMapID << "]);"                                                 << "\n\n";

    out_vboRender << "              glDrawArrays(GL_TRIANGLES, 0, " << object.polygons_qty*3 << ");"                                                   << "\n\n";

    out_vboRender << "              glDisableClientState(GL_VERTEX_ARRAY);"                                                                            << "\n";
    out_vboRender << "              glDisableClientState(GL_NORMAL_ARRAY);"                                                                            << "\n";
    out_vboRender << "              glDisableClientState(GL_TEXTURE_COORD_ARRAY);"                                                                     << "\n\n";

    out_vboRender << "              glUseProgramObjectARB(0);"                                                                                         << "\n\n";
//////////////////////////////////////////////////////_______RENDER_______///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////_______RENDER_______///////////////////////////////////////////////////////////
    //---------------------------------------------
////////////////////////////////////////////////////_______VERTEX_SHADER______//////////////////////////////////////////////////////
////////////////////////////////////////////////////_______VERTEX_SHADER______//////////////////////////////////////////////////////
    ofstream out_vertexShader("smokeSphereSmall/smokeSphereSmall.vert");

    out_vertexShader << "              uniform float counter;"                                                                                         << "\n\n";

    out_vertexShader << "              varying vec4 position;"                                                                                         << "\n\n";

    out_vertexShader << "              varying vec3 lightDir1;"                                                                                         << "\n\n";

    out_vertexShader << "              varying float attenuation;"                                                                                         << "\n\n";

    out_vertexShader << "              uniform float textureDisplacement_X;"                                                                                         << "\n\n";
    out_vertexShader << "              uniform float textureDisplacement_Y;"                                                                                         << "\n\n";
    out_vertexShader << "              uniform float offset_X;"                                                                                         << "\n\n";
    out_vertexShader << "              uniform float offset_Y;"                                                                                         << "\n\n";

    out_vertexShader << "              void main( void )"                                                                                         << "\n\n";
    out_vertexShader << "              {"                                                                                         << "\n\n";
    out_vertexShader << "                  gl_TexCoord[0]    = gl_MultiTexCoord0;"                                                                                         << "\n\n";
    out_vertexShader << "                  gl_TexCoord[1]    = gl_MultiTexCoord0;"                                                                                         << "\n\n";

    out_vertexShader << "              //////////////----------------------------    "                                                                                         << "\n\n";

    out_vertexShader << "                  gl_TexCoord[1].x *= 0.2;//____________?_________0.2 FOR 2 METER TILES"                                                                                         << "\n\n";
    out_vertexShader << "                  gl_TexCoord[1].y *= 0.2;"                                                                                         << "\n\n";

    out_vertexShader << "                  gl_TexCoord[1].x -= offset_X - .01;"                                                                                         << "\n\n";
    out_vertexShader << "                  gl_TexCoord[1].y -= offset_Y - .01;    "                                                                                         << "\n\n";

    out_vertexShader << "                  gl_TexCoord[1].x -= textureDisplacement_X;"                                                                                         << "\n\n";
    out_vertexShader << "                  gl_TexCoord[1].y -= textureDisplacement_Y;   "                                                                                         << "\n\n";
    out_vertexShader << "              //////////////----------------------------  "                                                                                         << "\n\n";

    out_vertexShader << "                  position         = gl_ModelViewProjectionMatrix * gl_Vertex;"                                                                                         << "\n\n";
    out_vertexShader << "                  gl_Position      = position;"                                                                                         << "\n\n";

    out_vertexShader << "                  lightDir1        =  normalize(gl_LightSource[0].position.xyz - position.xyz);"                                                                                         << "\n\n";
    out_vertexShader << "                  attenuation      =  1.00 / (gl_LightSource[0].quadraticAttenuation);"                                                                                         << "\n\n";
    out_vertexShader << "              }"                                                                                         << "\n\n";
////////////////////////////////////////////////////_______VERTEX_SHADER______//////////////////////////////////////////////////////
////////////////////////////////////////////////////_______VERTEX_SHADER______//////////////////////////////////////////////////////
    //---------------------------------------------
////////////////////////////////////////////////////_____FRAGMENT_SHADER_____//////////////////////////////////////////////////////
////////////////////////////////////////////////////_____FRAGMENT_SHADER_____//////////////////////////////////////////////////////
    ofstream out_fragmentShader("smokeSphereSmall/smokeSphereSmall.frag");

    out_fragmentShader << "uniform float counter;"                                 << "\n\n";

    out_fragmentShader << "varying vec4 position;"                                 << "\n\n";

    out_fragmentShader << "float distance;  "                                 << "\n\n";
    out_fragmentShader << "varying float attenuation;"                                 << "\n\n";

    out_fragmentShader << "vec4 finalcolor;"                                 << "\n\n";


    out_fragmentShader << "vec3 normal;"                                 << "\n\n";
    out_fragmentShader << "varying vec3 lightDir1;"                                 << "\n\n";

    out_fragmentShader << "float NdotL1;"                                 << "\n\n";

    out_fragmentShader << "uniform sampler2D Texture1;"                                 << "\n\n";
    out_fragmentShader << "uniform sampler2D Texture2;"                                 << "\n\n";
    out_fragmentShader << "uniform sampler2D NormalMap;"                                 << "\n\n";
    out_fragmentShader << "uniform sampler2D ShadowMap;"                                 << "\n\n";

    out_fragmentShader << "vec4 shadowTexture;"                                 << "\n\n";

    out_fragmentShader << "vec4 secondTexture;"                                 << "\n\n";



    out_fragmentShader << "void main( void )"                                 << "\n\n";
    out_fragmentShader << "{"                                                 << "\n\n";
    out_fragmentShader << "        //secondTexture                =   texture2D(Texture2,  gl_TexCoord[0].st);//__ADDS_A_SECOND_PRIMARY_TEXTURE_-->>THIS_HAS_THE_EFFECT_OF_BLENDING_VARIOUS_MODEL_COLORS"   << "\n";

    out_fragmentShader << "         shadowTexture                  =   texture2D(ShadowMap,  gl_TexCoord[1].st);"                                 << "\n\n";

    out_fragmentShader << "         //finalcolor                   =   texture2D(Texture1, gl_TexCoord[0].xy)*.5 + secondTexture*.5;//____ADDS_PRIMARY_TEXTURE_AND_SECOND_TEXTURE"                                 << "\n";
    out_fragmentShader << "         finalcolor                     =   texture2D(Texture1, gl_TexCoord[0].xy); "                                 << "\n\n";

    out_fragmentShader << "         vec3 NormalTex                 =   texture2D(NormalMap,  gl_TexCoord[0].st).xyz;"                                 << "\n";
    out_fragmentShader << "         NormalTex                      =  (NormalTex - 0.5) * 2.0;"                                 << "\n";
    out_fragmentShader << "         normal                         =   normalize(NormalTex);"                                 << "\n\n";

    out_fragmentShader << "         NdotL1                         =   dot(normal,lightDir1);"                                 << "\n\n";

    out_fragmentShader << "         if(NdotL1 > 0.0)"                                 << "\n";
    out_fragmentShader << "         {"                                 << "\n";
    out_fragmentShader << "                float specularLight       =   pow(NdotL1, gl_FrontMaterial.shininess);  "                                 << "\n";
    out_fragmentShader << "                finalcolor               +=  (finalcolor * specularLight) * shadowTexture;"                                 << "\n";
    out_fragmentShader << "         }    "                                 << "\n\n";

    out_fragmentShader << "         finalcolor                    *=   attenuation * NdotL1; "                                 << "\n\n";

    out_fragmentShader << "         shadowTexture                  =  (1.0 - shadowTexture) * 0.3; "                                 << "\n\n";

    out_fragmentShader << "         gl_FragColor                   =  (finalcolor - shadowTexture);"                                 << "\n\n";

    out_fragmentShader << "         }"                                 << "\n\n";
////////////////////////////////////////////////////_____FRAGMENT_SHADER_____//////////////////////////////////////////////////////
////////////////////////////////////////////////////_____FRAGMENT_SHADER_____//////////////////////////////////////////////////////
    //---------------------------------------------

    //---------------------------------------------
////////////////////////////////////////////////////_____LOCATION_STRINGS_____//////////////////////////////////////////////////////
////////////////////////////////////////////////////_____LOCATION_STRINGS_____//////////////////////////////////////////////////////
    ofstream out_LOCATION_STRINGS("smokeSphereSmall/_LOCATION_STRINGS.cpp");
    out_LOCATION_STRINGS << "                             #include \"_MODEL_FOLDERS_/smokeSphereSmall/smokeSphereSmall_vboGlobals.cpp\"//vboID = " << "" << vboID <<"\n";
    out_LOCATION_STRINGS << "                             #include \"_MODEL_FOLDERS_/smokeSphereSmall/smokeSphereSmall_vboRender.cpp\"//vboID = " << "" << vboID <<"\n";
    out_LOCATION_STRINGS << "                             #include \"_MODEL_FOLDERS_/smokeSphereSmall/smokeSphereSmall_vboInit.cpp\" //vboID = " << "" << vboID <<"\n";
    out_LOCATION_STRINGS << "                             #include \"_MODEL_FOLDERS_/smokeSphereSmall/smokeSphereSmall_shaderInit.cpp\"//vboID = " << "" << vboID <<"\n";

////////////////////////////////////////////////////_____LOCATION_STRINGS_____//////////////////////////////////////////////////////
////////////////////////////////////////////////////_____LOCATION_STRINGS_____//////////////////////////////////////////////////////
}
Пример #2
0
/* Функция обработки сообщения окна.
 * АРГУМЕНТЫ:
 *   - дескриптор окна:
 *       HWND hWnd;
 *   - номер сообщения (см. WM_***):
 *       UINT Msg;
 *   - параметр сообшения ('word parameter'):
 *       WPARAM wParam;
 *   - параметр сообшения ('long parameter'):
 *       LPARAM lParam;
 * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
 *   (LRESULT) - в зависимости от сообщения.
 */
LRESULT CALLBACK MyWindowFunc( HWND hWnd, UINT Msg,
                               WPARAM wParam, LPARAM lParam )
{
  HDC hDC;
  CREATESTRUCT *cs;
  static BITMAP bm;
  static HBITMAP hBm, hBmLogo;
  static HDC hMemDC, hMemDCLogo;
  static INT w, h;
 

  switch (Msg)
  {
  case WM_CREATE:
    //if (GlobeImage.hBm == NULL)
    ObjLoad("cow.object");
    cs = (CREATESTRUCT *)lParam;
    SetTimer(hWnd, 111, 50, NULL);

    /* создаем контекст в памяти */
    hDC = GetDC(hWnd);
    hMemDC = CreateCompatibleDC(hDC);
    hMemDCLogo = CreateCompatibleDC(hDC);
    ReleaseDC(hWnd, hDC);
    return 0;

  case WM_SIZE:
    w = LOWORD(lParam);
    h = HIWORD(lParam);

    /* создаем картинку размером с окно */
    if (hBm != NULL)
      DeleteObject(hBm);

    hDC = GetDC(hWnd);
    hBm = CreateCompatibleBitmap(hDC, w, h);
    ReleaseDC(hWnd, hDC);
                      
    SelectObject(hMemDC, hBm);
    SendMessage(hWnd, WM_TIMER, 111, 0);
    return 0;

  case WM_TIMER:
    /* Clear Background */
    SelectObject(hMemDC, GetStockObject(NULL_PEN));
    SelectObject(hMemDC, GetStockObject(DC_BRUSH));
    SetDCBrushColor(hMemDC, RGB(255, 225, 225));    
    Rectangle(hMemDC, 0, 0, w + 1, h + 1);

    /*StretchBlt(hMemDC, 0, 0, w, h - 100,
      hMemDCLogo, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);*/
    
   
    ObjDraw(hMemDC, h, w);


    InvalidateRect(hWnd, NULL, TRUE);
    return 0;

  case WM_CLOSE:
    if (MessageBox(hWnd, "Are you shure to exit from program?",
          "Exit", MB_YESNO | MB_ICONQUESTION) == IDNO)
      return 0;
    break;

  case WM_ERASEBKGND:
    BitBlt((HDC)wParam, 0, 0, w, h, hMemDC, 0, 0, SRCCOPY);
    return 0;

  case WM_DESTROY:
    DeleteDC(hMemDC);
    DeleteObject(hBm);
    KillTimer(hWnd, 111);
    PostQuitMessage(0);
    return 0;
  }
  return DefWindowProc(hWnd, Msg, wParam, lParam);
} /* End of 'MyWindowFunc' function */