Crackkk-GM Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 Witajcie, Dziś wziąłem się za pisanie DLL'ki, dzięki której będzie można napisać grę z użyciem d3d w gm'ie... I mam parę błędów... (taki mały teścik chciałem zrobić czy mi to wyjdzie :P) I podczas kompilacji wyskoczyło parę błędów.... Mógłby je ktoś poprawić?? Będę bardzo wdzięczny :) Oto kod źródłowy: /* D3D4GM.Dll: Direct 3D For GM :) By Crackkk-GM */ #include <d3d9.h> #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE) #define export extern "C" __declspec(dllexport) export double _d3d_start(void) { LPDIRECT3D9 g_pD3D=NULL; LPDIRECT3DDEVICE9 g_pd3dDevice=NULL; if (NULL==(g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) return E_FAIL; }; export double _d3d_CreateRenderWindow (double a1,double a2,double a3) { D3DPRESENT_PARAMETERS pp; ZeroMemory(&pp,sizeof(pp)); pp.Windowed = a1; pp.BackBufferWidth = a2; pp.BackBufferHeight = a3; pp.BackBufferFormat = D3DFMT_A8R8G8B8; pp.SwapEffect = D3DSWAPEFFECT_FLIP; if( FAILED( g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &pp, &g_pd3dDevice) ) ) return E_FAIL; }; export double _d3d_RenderWindow (double a1) { g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, a1, 1.0f, 0L ); g_pd3dDevice->BeginScene(); g_pd3dDevice->EndScene(); g_pd3dDevice->Present( NULL, NULL, NULL, NULL ); }; export double _d3d_end(void) { if(g_pd3dDevice!= NULL) g_pd3dDevice->Release(); if(g_pD3D!= NULL) g_pD3D->Release(); }; export double _d3d_PolygonsBuffor(double a1,double a2) { LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; struct CUSTOMVERTEX { FLOAT x, y, z, rhw; //pozycja wierzchołka DWORD color; //kolor wierzchołka }; if(FAILED(g_pd3dDevice->CreateVertexBuffer(a1*sizeof(CUSTOMVERTEX), a2, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL))) { return E_FAIL; } }; export double _d3d_DrawPolygons(double c1,double a1,double a2,double a3,double a4,double a5,double a6,double a7,double a8,double a9,double a10,double a11,double a12) { CUSTOMVERTEX vertices[] = { { a1, a2, a3, a4, c1, }, { a5, a6, a7, a8, c1, }, { a9, a10, a11, a12, c1, }, }; VOID* pVertices; if( FAILED( g_pVB->Lock(0, sizeof(vertices),(void**)&pVertices,0))) return E_FAIL; memcpy( pVertices, vertices, sizeof(vertices) ); g_pVB->Unlock(); } Wiecie, nie śmiejcie się :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 Jak mamy poprawić błędy nie znających ich treści. Poza tym, tylko 3 linijki komentarzy są twoje, nawet nie wiemy (tak jak ty) co ten kod robi :/ . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 pp.Windowed = a1; Żal... nie masz pojęcia co robisz... a "wklejanie" całego kodu z tekstem "hej znajdzcie mi tu błąd" jest lamerskie.. Najpierw proponuje się nauczyć języka programowania a potem zabrać się za biblioteki graficzne.. Kompilujesz ręcznie? bo jakoś nie chce wierzyć, że nie dostałeś dokładnego komunikatu o błedzie.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 24 Marca 2008 Autor Udostępnij Opublikowano 24 Marca 2008 @Misztrzunio: Błędy podam za poł godziny (siorka na kompie :/) Dla kogoś, kto się zna to te kody nie sprawiają trudności... nawet nie wiemy (tak jak ty) co ten kod robi :/ . Może ty nie wiesz...... @Will: pp.Windowed = a1; // to jest "odpowiednik" true = okienko, false = fullscreen, a1 = argument zobacz troszkę wyżej to będziesz wiedzieć o co chodzi ^^ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
murdalow Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 może lepiej to co jest z dużych liter napisać małymi bo jakieś to dziwne ale to moje odczucie więc sorry Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 export double _d3d_DrawPolygons(double c1,double a1,double a2,double a3,double a4,double a5,double a6,double a7,double a8,double a9,double a10,double a11,double a12) { CUSTOMVERTEX vertices[] = { { a1, a2, a3, a4, c1, }, { a5, a6, a7, a8, c1, }, { a9, a10, a11, a12, c1, }, }; VOID* pVertices; if( FAILED( g_pVB->Lock(0, sizeof(vertices),(void**)&pVertices,0))) return E_FAIL; memcpy( pVertices, vertices, sizeof(vertices) ); g_pVB->Unlock(); } Żal 2... Myślenie nie boli.. fajne argumenty funkcji! Ale myśle , że tu już błąd widzisz.. a co do wyżej to chodziło mi o wartośc double, przypisywanie double do bool? strata pamięci.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 24 Marca 2008 Autor Udostępnij Opublikowano 24 Marca 2008 Już poprawiam... Dzięki :P moja pomyłka xd Błędy: C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp In function `double _d3d_CreateRenderWindow(bool, bool, bool)': 23 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `g_pD3D' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) 23 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `hWnd' undeclared (first use this function) 23 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `g_pd3dDevice' undeclared (first use this function) C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp In function `double _d3d_RenderWindow(bool)': 28 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `g_pd3dDevice' undeclared (first use this function) C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp In function `double _d3d_end()': 36 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `g_pd3dDevice' undeclared (first use this function) 37 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `g_pD3D' undeclared (first use this function) C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp In function `double _d3d_PolygonsBuffor(double, double)': 49 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `g_pd3dDevice' undeclared (first use this function) C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp In function `double _d3d_DrawPolygons(bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool)': 56 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `CUSTOMVERTEX' undeclared (first use this function) 56 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp expected `;' before "vertices" 64 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `g_pVB' undeclared (first use this function) 64 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `vertices' undeclared (first use this function) C:\Documents and Settings\Patryk\Pulpit\D3D4GM\Makefile.win [build Error] [dllmain.o] Error 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 Żal 3? Masz wszystkie błędy wyświetlone.. i wszytskie ładnie opisane.. gdzie Ty widzisz problem.. undeclared.. export double _d3d_start(void) { LPDIRECT3D9 g_pD3D=NULL; LPDIRECT3DDEVICE9 g_pd3dDevice=NULL; if (NULL==(g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) return E_FAIL; }; skoro masz all zdeklarowane w funkcji to jak niby ma to być znane w innych funkcjach? 0.o Nie kopiuj gotowców z jakiś kursów.. pisz sam.. C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp In function `double _d3d_DrawPolygons(bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool)': żal 4? chodziło o funkcje z przypisywaniem parametru w wyższym poście ^.-- Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 24 Marca 2008 Autor Udostępnij Opublikowano 24 Marca 2008 Zaraz poprawię.... Dam w Edicie inne błędy... @Edit: 24 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `hWnd' undeclared (first use this function) Pffff jak to zdeklarować? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 24 C:\Documents and Settings\Patryk\Pulpit\D3D4GM\dllmain.cpp `hWnd' undeclared (first use this function) Pffff jak to zdeklarować? Jak wszystko inne? Z tego co wiem to uchwyt okna, ale nie pamiętam jakiego typu to było. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 Żal 5 ;] HWND uchwyt do okna w ,ktorym odbędzie się renderowanie.. zdeklarować bardzo prosto HWND hWnd; ... To, że twój kod jest błędny to jedno.. a to, że jest niepełny i bezsensowny to drugie ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 24 Marca 2008 Autor Udostępnij Opublikowano 24 Marca 2008 Eee... #include <d3d9.h> Możliwe, że nie mam d3d9.h... (używam Dev-Cpp) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 Ale że w czym teraz problem, nie rozumiem twojego posta. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 Żal 6... co ma WinAPI do DirectX? jakby chodziło o d3d9 linker wysypał by pełno błędów ^.-- Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 24 Marca 2008 Autor Udostępnij Opublikowano 24 Marca 2008 d3d9.h jest potrzebny do funkcji D3D (tak myślę <_<) A chyba tego nie mam :/ @UP: Jest parę błędów... A jeśli chodzi o Winapi to trzeba na początku kodu dać: #include <windows.h> <_< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 (tak myślę dry.gif) Czyli sam nie wiesz co piszesz? A chyba tego nie mam :/ OMG! Tak trudno sprawdzić? Jak można pisać coś w oparciu o bibliotekę nie wiedząc czy ją sie ma :f @up: nie gadaj. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 24 Marca 2008 Autor Udostępnij Opublikowano 24 Marca 2008 A ja tego nie zrobiłem.... :P Nie jestem pewny na 100%, bo jestem jeszcze takim newbie :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 sorry Ale Ty nie masz zielonego pojęcia co piszesz.. Weź się za jakiś tutorial najpierw c++ potem jakieś api a na końcu DirectX... Inaczej to się mija z celem kompletnie.... Jeśli dalej chcesz tak programy pisac to żal.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kryniak Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 Eee... #include <d3d9.h> Moßliwe, ße nie mam d3d9.h... (ußywam Dev-Cpp) To przejdz na visual c++ skoro piszesz programy tylko dla windowsa (dev-cpp to kicz). Co do strony: http://gamemakercity.xup.pl/viewtopic.php?p=61 Wróc na forum jak będziesz miał 15 lat. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 24 Marca 2008 Udostępnij Opublikowano 24 Marca 2008 A jeśli chodzi o Winapi to trzeba na początku kodu dać:#include <windows.h> dry.gif Wcale że nie... nie wiem czy wiesz, ale "d3d9.h" ma już implementację "windows.h" i na początku jest zbędne ( co najmniej u mnie tak jest ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Solmis Opublikowano 25 Marca 2008 Udostępnij Opublikowano 25 Marca 2008 @Crackkk-GM: Po pierwsze primo: Nie bierz się za takie rzeczy, skoro ich nie rozumiesz... Po drugie secundo: Zaczyna się od tutoriala/tutoriali... :< :confused: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 25 Marca 2008 Autor Udostępnij Opublikowano 25 Marca 2008 @UP: Dzięki za dobre rady, ale nigdzie nie ma kursu na pisanie DLL z użyciem DirectX... @topic: Zamykam, poprawie sam :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi