void GLInit(void) { glEnable(GL_DEPTH_TEST); glClearColor(1.0, 1.0, 1.0, 1.0); LightSet(); }
///////////////////////////////////// // Name: LightEnableAllNearest // Purpose: enable lights that are near // location. // Output: lights enabled // Return: none ///////////////////////////////////// PUBLIC void LightEnableAllNearest(const float loc[eMaxPt]) { if(g_lights && g_numLight > 0) { int curMax = 0, i; float v[eMaxPt]; for(i = 0; i < g_numLight; i++) { if(g_lights[i].dat.Type == D3DLIGHT_POINT || g_lights[i].dat.Type == D3DLIGHT_SPOT) { v[eX] = loc[eX] - g_lights[i].dat.Position.x; v[eY] = loc[eY] - g_lights[i].dat.Position.y; v[eZ] = loc[eZ] - g_lights[i].dat.Position.z; g_lights[i].dist = v[eX]*v[eX] + v[eY]*v[eY] + v[eZ]*v[eZ]; } else g_lights[i].dist = -1; } //sort qsort(g_lights, g_numLight, sizeof(gfxLight), _LightCompare); int max = g_maxLight < g_numLight ? g_maxLight : g_numLight; for(i = 0; i < max; i++) LightSet(i, &g_lights[i].dat, TRUE); } //LightReset(); //gfxLight *pLight; /*for(int i = 0; i < g_numLight; i++) { //don't add anymore light... if(curMax == g_maxLight) break; pLight = &g_lights[i]; if(pLight && (pLight->dat.Type == D3DLIGHT_POINT || pLight->dat.Type == D3DLIGHT_SPOT)) { v[eX] = loc[eX] - pLight->dat.Position.x; v[eY] = loc[eY] - pLight->dat.Position.y; v[eZ] = loc[eZ] - pLight->dat.Position.z; light_len_sq = v[eX]*v[eX] + v[eY]*v[eY] + v[eZ]*v[eZ]; if(light_len_sq <= pLight->dat.Range*pLight->dat.Range) { LightSet(curMax, &pLight->dat, TRUE); curMax++; } } }*/ }
void GLInit(void) { glEnable(GL_DEPTH_TEST); glClearColor(1.0, 1.0, 1.0, 1.0); LightSet(); myMesh.loadMesh("female1.sms"); clothMesh.loadMesh("cloth.txt"); }
void init(int argc, char **argv) { initWindow(&argc, argv); glClearColor(1.0, 1.0, 1.0, 1.0); LightSet(); glEnable(GL_DEPTH_TEST); }
void init(void) { glEnable(GL_DEPTH_TEST); glClearColor(0.8, 0.9, 0.9, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60, 1, 1, 1000); LightSet(); }
void GLInit(void) { glEnable(GL_DEPTH_TEST); glClearColor(0.6, 0.3, 0.3, 1.0); LightSet(); glEnable(GL_COLOR_MATERIAL); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); }
void Direct3DRender(HWND hwnd) { RECT formatRect; GetClientRect(hwnd, &formatRect); gPD3DDevice->Clear(0, nullptr, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0, 30), 1.0f, 0.0f); gPD3DDevice->BeginScene(); MatrixSet(); WCHAR str[50]; int strCount = swprintf_s(str, _T("Mat, Mesh & Light!")); gPFont->DrawTextW(nullptr, str, strCount, &formatRect, DT_TOP| DT_RIGHT, D3DCOLOR_XRGB(25, 134, 111)); D3DXMATRIX Ry; D3DXMatrixRotationY(&Ry, timeGetTime() / 1000.0f); D3DXMATRIX teaPotWorldTrans; D3DXMatrixTranslation(&teaPotWorldTrans, 2.5f, 2.5f, 2.5f); D3DXMATRIX Sa; D3DXMatrixScaling(&Sa, 2.0f, 2.0f, 2.0f); teaPotWorldTrans = teaPotWorldTrans * Ry * Sa; gPD3DDevice->SetTransform(D3DTS_WORLD, &teaPotWorldTrans); D3DMATERIAL9 material; ZeroMemory(&material, sizeof(material)); material.Ambient = D3DXCOLOR(0.5f, 0.5f, 0.7f, 1.0f); material.Diffuse = D3DXCOLOR(0.4f, 0.6f, 0.6f, 1.0f); material.Specular = D3DXCOLOR(0.3f, 0.3f, 0.3f, 0.3f); material.Emissive = D3DXCOLOR(0.3f, 0.0f, 0.1f, 1.0f); gPD3DDevice->SetMaterial(&material); gPTeapot->DrawSubset(0); D3DXMATRIX boxWorldTrans; D3DXMatrixTranslation(&boxWorldTrans, -5.0f, 5.0f, 5.0f); boxWorldTrans *= Ry; gPD3DDevice->SetTransform(D3DTS_WORLD, &boxWorldTrans); ZeroMemory(&material, sizeof(material)); material.Ambient = D3DXCOLOR(0.3f, 0.1f, 0.5f, 1.0f); material.Diffuse = D3DXCOLOR(0.4f, 0.6f, 0.6f, 1.0f); material.Specular = D3DXCOLOR(0.3f, 0.3f, 0.3f, 1.3f); material.Emissive = D3DXCOLOR(0.3f, 0.0f, 0.1f, 1.0f); gPD3DDevice->SetMaterial(&material); gPBox->DrawSubset(0); D3DXMATRIX torusWorldTrans; D3DXMatrixTranslation(&torusWorldTrans, 5.0f, -5.0f, 5.0f); torusWorldTrans *= Ry; gPD3DDevice->SetTransform(D3DTS_WORLD, &torusWorldTrans); ZeroMemory(&material, sizeof(material)); material.Ambient = D3DXCOLOR(0.5f, 0.2f, 0.3f, 1.0f); material.Diffuse = D3DXCOLOR(0.6f, 0.2f, 0.4f, 1.0f); material.Specular = D3DXCOLOR(0.3f, 0.3f, 0.3f, 0.3f); material.Emissive = D3DXCOLOR(0.3f, 0.0f, 0.1f, 1.0f); gPD3DDevice->SetMaterial(&material); gPTorus->DrawSubset(0); D3DXMATRIX sphereWorldTrans; D3DXMatrixTranslation(&sphereWorldTrans, -5.0f, -5.0f, 5.0f); sphereWorldTrans *= Ry; gPD3DDevice->SetTransform(D3DTS_WORLD, &sphereWorldTrans); ZeroMemory(&material, sizeof(material)); material.Ambient = D3DXCOLOR(0.9f, 0.1f, 0.9f, 1.0f); material.Diffuse = D3DXCOLOR(0.3f, 0.6f, 0.8f, 1.0f); material.Specular = D3DXCOLOR(0.3f, 0.3f, 0.3f, 0.3f); material.Emissive = D3DXCOLOR(0.9f, 0.4f, 0.7f, 1.0f); gPD3DDevice->SetMaterial(&material); gPSphere->DrawSubset(0); LightSet(gPD3DDevice, 1); gPD3DDevice->EndScene(); gPD3DDevice->Present(nullptr, nullptr, nullptr, nullptr); }
bool TAnimModel::Load(cParser *parser, bool ter) { // rozpoznanie wpisu modelu i ustawienie �wiate� AnsiString str; std::string token; parser->getTokens(); // nazwa modelu *parser >> token; str = AnsiString(token.c_str()); parser->getTokens(1, false); // tekstura (zmienia na ma�e) *parser >> token; if (!Init(str, AnsiString(token.c_str()))) { if (str != "notload") { // gdy brak modelu if (ter) // je�li teren { if (str.SubString(str.Length() - 3, 4) == ".t3d") str[str.Length() - 2] = 'e'; Global::asTerrainModel = str; WriteLog(AnsiString("Terrain model \"" + str + "\" will be created.")); } else ErrorLog(AnsiString("Missed file: " + str)); } } else { // wi�zanie �wiate�, o ile model wczytany LightsOn[0] = pModel->GetFromName("Light_On00"); LightsOn[1] = pModel->GetFromName("Light_On01"); LightsOn[2] = pModel->GetFromName("Light_On02"); LightsOn[3] = pModel->GetFromName("Light_On03"); LightsOn[4] = pModel->GetFromName("Light_On04"); LightsOn[5] = pModel->GetFromName("Light_On05"); LightsOn[6] = pModel->GetFromName("Light_On06"); LightsOn[7] = pModel->GetFromName("Light_On07"); LightsOff[0] = pModel->GetFromName("Light_Off00"); LightsOff[1] = pModel->GetFromName("Light_Off01"); LightsOff[2] = pModel->GetFromName("Light_Off02"); LightsOff[3] = pModel->GetFromName("Light_Off03"); LightsOff[4] = pModel->GetFromName("Light_Off04"); LightsOff[5] = pModel->GetFromName("Light_Off05"); LightsOff[6] = pModel->GetFromName("Light_Off06"); LightsOff[7] = pModel->GetFromName("Light_Off07"); } for (int i = 0; i < iMaxNumLights; ++i) if (LightsOn[i] || LightsOff[i]) // Ra: zlikwidowa�em wym�g istnienia obu iNumLights = i + 1; int i = 0; int ti; parser->getTokens(); *parser >> token; if (token.compare("lights") == 0) { parser->getTokens(); *parser >> token; str = AnsiString(token.c_str()); do { ti = str.ToDouble(); // stan �wiat�a jest liczb� z u�amkiem LightSet(i, ti); i++; parser->getTokens(); *parser >> token; str = AnsiString(token.c_str()); } while (str != "endmodel"); }