コード例 #1
0
ファイル: main.cpp プロジェクト: dknife/201502_Graphics
void GLInit(void) {

	glEnable(GL_DEPTH_TEST);
	glClearColor(1.0, 1.0, 1.0, 1.0);

	LightSet();
}
コード例 #2
0
ファイル: GFX_Light.cpp プロジェクト: ddionisio/TaTaMahatta
/////////////////////////////////////
// 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++;
			}
		}
	}*/
}
コード例 #3
0
ファイル: main.cpp プロジェクト: dknife/201502_Graphics
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");
}
コード例 #4
0
ファイル: main.cpp プロジェクト: dknife/201502_GameMath
void init(int argc, char **argv) {
	initWindow(&argc, argv);
	
	glClearColor(1.0, 1.0, 1.0, 1.0);
	
	LightSet();
	glEnable(GL_DEPTH_TEST);
	
}
コード例 #5
0
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();
}
コード例 #6
0
ファイル: main.cpp プロジェクト: dknife/201502_Graphics
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);


}
コード例 #7
0
ファイル: main.cpp プロジェクト: wakqaz4/MyGame
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);
}
コード例 #8
0
ファイル: AnimModel.cpp プロジェクト: antonisauren/maszyna
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");
    }