Kann dieser Device keine Vertizen rendern?
-
Servus
Habe mir vorgenommen DirectX zu lernen und werde das auch sicher durchziehen. Ich habe mir mal eine kleine Billigengine geschrieben mit der man Sprites zeichnen kann, funktioniert auch soweit. Jetzt habe ich aus einem Tutorial zum Rendern von Dreiecken alles so in meinen Code eingesetzt wie es erklärt worden ist. Das Ergebnis war leider nur ein mhh...wie kann mans erklären. Ein buntes Quadrat um 100° nach links gedreht und die Hälfte "hinter" dem Bildschirm. Das flackert dann kurz und zack - Programm ist beendet (ohne Fehler :/)
Ist vielleicht etwas an meiner Deviceinitialisation inkorrekt?void Init(HWND main_window_handle) { lpD3D = Direct3DCreate8(D3D_SDK_VERSION); lpD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm); ZeroMemory(&d3dpp, sizeof(d3dpp)); //d3dpp.Windowed = FALSE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;//D3DSWAPEFFECT_FLIP; d3dpp.BackBufferFormat = d3ddm.Format; d3dpp.BackBufferWidth = SCREEN_WIDTH; d3dpp.BackBufferHeight = SCREEN_HEIGHT; d3dpp.BackBufferCount = 1; d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; d3dpp.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_ONE; d3dpp.hDeviceWindow = main_window_handle; if(lpD3D->CheckDeviceType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, d3ddm.Format, d3ddm.Format, FALSE)==D3D_OK) { lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, main_window_handle, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &lpD3DDevice); //->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, handle, // D3DCREATE_SOFTWARE_VERTEXPROCESSING, //&d3dpp, &D3D_Device ) } else { lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF , main_window_handle, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &lpD3DDevice); } lpD3D->GetAdapterIdentifier(D3DADAPTER_DEFAULT, 0, &AdapterIdentifier); //SetWindowText(main_window_handle, AdapterIdentifier.Description); lpD3DDevice->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &lpBackbuffer); lpD3DDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_XRGB(255,255,255)); lpD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); lpD3DDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ); }
Fehlt da vielleicht etwas?
Nex
-
habs schon
hab aus Versehen beim Rendern die Größe zu groß gemacht(ich weiß sagt jetzt niemandem was)