Konsole im DirectX Programm



  • ok das ist tatsächlich cool.
    Ich hatte nicht den Gedanken, dass ich zwischen den Objekten den Blickpunkt frei verändern kann...

    Es ist sicherlich nützlich ja. Ich komme sonst aber ganz gut zurecht mit der Mathematik. Das hier war ja mehr ein Überlegungsproblem. Ich merke aber das ich so, nur ein Minimum der Fähigkeiten von DirectX abschöpfe... überdenkenswürdig.

    Danke dir 🙂



  • cl90 schrieb:

    Ich merke aber das ich so, nur ein Minimum der Fähigkeiten von DirectX abschöpfe... überdenkenswürdig.

    Ich würde dir sowieso empfehlen, dich mit Shadern zu beschäftigen. Das fördert nicht nur das Verständnis und macht die Dinge sehr viel einfacher, sondern hilft dir auch, am Ende von D3D9 loszukommen, was diese Tage auf jeden Fall sein Ziel sein sollte, da diese API einfach hoffnungslos veraltet ist. Und so lange du die FFP nutzt, ist "ein Minimum der Fähigkeiten von DirectX abschöpfen" sogar was D3D9 betrifft rein prinzipiell schon maßlos untertrieben...



  • Sobald ich mich mit richtiger Spieleprogrammierung beschäftige werde ich auch nach einer Außeinandersetzung mit Shadern zu DX 11 wechseln. Aber mommentan arbeite ich wie gesagt an einem Projekt das auch auf Firmen PCs laufen muss und da wird erst bald auf Win7 umgestellt...

    Aber prinzipiell hast du da vollkommen recht.



  • ok... jetzt ergeben sich kleine Schwierigkeiten mit der Textur.
    Die Textur wird unsauber, pixelig und "unrund" dargestellt. (Die Reihenfolge der Ecken stimmt. Der Text der in der Textur ist, ist nicht gedreht/spiegelverkert)
    Derzeitig steht die Fenstergröße auf 1280x900. Die Textur die ich lade hat genau die selbe Größe. Das Viereck das ich zum zeichnen der Textur nehme ist ein Quadrat. Ist das der Ursprung meines problems?

    hier das zeichnen:

    m_d3ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
    	m_d3ddev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
    
    	m_d3ddev->SetTransform(D3DTS_WORLD,			&m_identity);
        m_d3ddev->SetTransform(D3DTS_VIEW,			&m_identity);   
    	m_d3ddev->SetTransform(D3DTS_PROJECTION,	&m_identity);
    
    	m_view->set_light_clip();
    
    	m_d3ddev->SetTexture(0, *m_meshTextures[4]); 
    	for(i = 0; i < m_mesh[0].numMaterials; i++)
    	{
    		m_d3ddev->SetMaterial(&m_mesh[0].meshMaterials[i]);
    		m_mesh[0].mesh->DrawSubset(i);
    	}
    	m_d3ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
    	m_d3ddev->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
    


  • Ist der Client Bereich deines Fensters bzw. dein BackBuffer wirklich 1280x900? Ich vermute mal, dass dem nicht so ist... 😉



  • ja stimmt. Das ganze Fenster ist 1280x900. der sichtbare Bereich ist nur 1263x861... kann man das genau ausrechnen/auslesen?

    edit:
    ok hier steht aber das er genau die größe hat:

    m_d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
        m_d3dpp.BackBufferWidth = SCREEN_WIDTH;
        m_d3dpp.BackBufferHeight = SCREEN_HEIGHT;
    




  • das ist wirklich praktisch.
    ich krieg als neue werte 1296x958. Die werte setz ich dann in mein WC create ein aber es sieht immer noch falsch aus...

    RECT test;
    	test.top		= 0;
    	test.bottom		= SCREEN_HEIGHT;
    	test.left		= 0;
    	test.right		= SCREEN_WIDTH;
    	AdjustWindowRect(&test, WS_OVERLAPPEDWINDOW, false);
    
    	int width, height;
    
    	width	= test.right - test.left;
    	height	= test.bottom - test.top;
    
        HWND hWnd;
        WNDCLASSEX wc;
    
        ZeroMemory(&wc, sizeof(WNDCLASSEX));
    
        wc.cbSize			= sizeof(WNDCLASSEX);
        wc.style			= CS_HREDRAW | CS_VREDRAW;
    	wc.lpfnWndProc		= WindowProc;
        wc.hInstance		= hInstance;
        wc.hCursor			= LoadCursor(NULL, IDC_ARROW);
        wc.lpszClassName	= "WindowClass";
    
        RegisterClassEx(&wc);
    
        hWnd = CreateWindowEx(NULL, "WindowClass", "HexapodSiSO",
    						  WS_OVERLAPPEDWINDOW, 0, 0, width, height,
                              NULL, NULL, hInstance, NULL);
    

Anmelden zum Antworten