![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| MrBAIZOR |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 23.1.2011 Репутация: нет Всего: нет |
Я только начал сам учить Directx и пройдя уже не мало проблем,никак не могу нарисовать полигон!
Скачал книгу Горнова,дошел до создания полигона,весь код просто слизал с книги - полигон не выводиться. Решил что проблема в книге потому-что нашел не мало плохих коментов о книге. Нашел другую,та же проблема.Все сделал,опять слизал код с книги,и все равно полигона нету! =( Может проблема в настройке Студии,правильном подключении библиотек? (У меня была проблема с подключением d3dx9.h/lib,пришлось указывать полный путь,иначе не работало!) Может я не там вызываю нужную функцию,код в книгах не описывал сам _tWinMain. Help! _tWinMain(...) Код C++ { ..... ..... initDirect3D(); SetupVB(); // Main message loop: for(;;) { if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) { TranslateMessage(&msg); DispatchMessage(&msg); if(EXIT){break;} } else { render2();G++; if(G>255){G=0;} } } } Resourse.h Код C++ LPDIRECT3D9 pD3D; // the Direct3D object LPDIRECT3DDEVICE9 pd3dDevice; // the Direct3D device LPDIRECT3DSURFACE9 surface=NULL; LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; LPDIRECT3DVERTEXBUFFER9 buffer=NULL; int G=0; struct CUSTOMVERTEX { FLOAT x, y, z, rhw; // the transformed, 3D position for the vertex DWORD color; // the vertex color }; #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW,D3DFVF_DIFFUSE) bool initDirect3D(void) { pD3D = NULL; pd3dDevice = NULL; // Create the DirectX object if( NULL == ( pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) { return false; } // Fill the presentation parameters structure D3DPRESENT_PARAMETERS d3dpp; ZeroMemory( &d3dpp, sizeof( d3dpp ) ); d3dpp.Windowed = TRUE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; d3dpp.BackBufferCount = 1; d3dpp.BackBufferHeight = 480; d3dpp.BackBufferWidth = 640; d3dpp.hDeviceWindow = GhWnd; // Create a default DirectX device if( FAILED( pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, GhWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pd3dDevice ) ) ) { return false; } HRESULT hResult = pd3dDevice->CreateOffscreenPlainSurface(640,480,D3DFMT_X8R8G8B8,D3DPOOL_DEFAULT,&surface,NULL); // reserved; should be NULL // Check the return value to make sure that this function call was successful if (FAILED(hResult)) return NULL; return true; } void render() { D3DXLoadSurfaceFromFile( surface,NULL,NULL,L"D:\\ICO\\Vetton\\vetton_ru_762.jpg",NULL,D3DX_DEFAULT,0,NULL ); // This will hold the back buffer IDirect3DSurface9* backbuffer = NULL; // Check to make sure you have a valid Direct3D device if( NULL == pd3dDevice ) return; // Clear the back buffer to a blue color pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,150,255), 1.0f, 0 ); // Get the back buffer pd3dDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &backbuffer ); // Copy the offscreen surface to the back buffer // Note the use of NULL values for the source and destination RECTs // This ensures a copy of the entire surface to the back buffer pd3dDevice->StretchRect( surface, NULL, backbuffer, NULL, D3DTEXF_NONE ); // Present the back buffer contents to the display pd3dDevice->Present ( NULL, NULL, NULL, NULL ); } void render2() { // Clear the back buffer to black pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,G,G), 1.0f, 0 ); // Tell Direct3D to begin the scene pd3dDevice->BeginScene(); // Draw the contents of the vertex buffer // Set the data stream first pd3dDevice->SetStreamSource( 0, buffer, 0, sizeof(CUSTOMVERTEX)); // Set the Vertex format for the stream next pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX ); // Draw the vertices within the buffer using triangle strips pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1 ); // Tell Direct3D that drawing is complete pd3dDevice->EndScene(); // copies the back buffer to the screen pd3dDevice->Present( NULL, NULL, NULL, NULL ); } void DeleteDirectXObjects() { EXIT=true; if(NULL!=pD3D){pD3D->Release();} if(NULL!=pd3dDevice){pd3dDevice->Release();} } HRESULT SetupVB() { HRESULT hr; // Initialize three vertices for rendering a triangle CUSTOMVERTEX g_Vertices[] ={ {320.0f, 50.0f, 0.5f, 1.0f, D3DCOLOR_ARGB (0, 255, 0, 0), }, {250.0f, 400.0f, 0.5f, 1.0f, D3DCOLOR_ARGB (0, 0, 255, 0), }, {50.0f, 400.0f, 0.5f, 1.0f, D3DCOLOR_ARGB (0, 0, 0, 255), }, }; // Create the vertex buffer hr = pd3dDevice->CreateVertexBuffer( 3*sizeof(CUSTOMVERTEX), 0, D3DFVF_XYZRHW|D3DFVF_DIFFUSE, D3DPOOL_DEFAULT, &g_pVB, NULL ); // Check to make sure that the vertex buffer was // created successfully if FAILED ( hr ) return NULL; VOID* pVertices; // Lock the vertex buffer hr = g_pVB->Lock( 0, sizeof(g_Vertices), (void**)&pVertices, 0 ); // Check to make sure the lock was successful if FAILED (hr) return E_FAIL; // Copy the vertices into the buffer memcpy( pVertices, g_Vertices, sizeof(g_Vertices) ); // Unlock the vertex buffer g_pVB->Unlock(); return S_OK; } |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
Модератор: Пользуйтесь тэгами.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 1 Всего: 10 |
А задал ли ты пути в настройках проекта? По поводу рендеринга, начнем с того, что инициализируешь ты переменную pVertices, а рендеришь неинициализированную buffer -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
| MrBAIZOR |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 23.1.2011 Репутация: нет Всего: нет |
Проблема решена.
Ошибка была в этой строке #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW,D3DFVF_DIFFUSE) #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE) |
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |