Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Pokaż wątki - FireBoll8

Strony: [1]
1
Witam potrzebuje rady bardziej doświadczonych, uczę się Direct 10 już od tyg. - ciężki jest dla początkujących co nigdy nie mieli styku z programowaniem 3D ;/  I zastanawiam się np. czy nie skorzystać z gotowego silnika i na jego bazie uczyć się programować 3D ... a jeśli tak to jakie to ma konsekwencje w przyszłości, patrząc pod względem np. pracy programisty czy korzystając z gotowych silników 3D i fizyki jakoś ogranicza programistę czy raczej umożliwia mu łatwiejszy kontakt z programowaniem 3D ? I czy pomaga to zrozumieć ogólnie budowę silnika oraz jak go zaprogramować?

2
Szkółka / Direct3D 11 - Tutorial 2 i 3 - brak pewnych informacji
« dnia: Lipiec 29, 2010, 21:19:26 »
Witam mam pytanie odnośnie tutorialu  z MSDN dotyczącego Direct3D 11. Otóż po przeczytaniu tutoriala 2 i 3 pomyślałem se że zabiorę się za stworzenie aplikacji podchodzącej pod wiedzę tych tutków - czyli narysowanie na ekranie prostego trójkąta ... oczywiście chciałem spojrzeć jak oni to robią .... patrzę i rozumiem wszystko to co zostało opisane w tutkach , interesuje mnie jednak jedna zdefiniowana funkcja której nie rozumiem do końca po co to jest .. nazwa wskazuje że kompiluje shadery z plików ... no ale mi to za wiele nie mówi ;/
HRESULT CompileShaderFromFile( WCHAR* szFileName, LPCSTR szEntryPoint, LPCSTR szShaderModel, ID3DBlob** ppBlobOut )
{
    HRESULT hr = S_OK;

    DWORD dwShaderFlags = D3DCOMPILE_ENABLE_STRICTNESS;
#if defined( DEBUG ) || defined( _DEBUG )
    // Set the D3DCOMPILE_DEBUG flag to embed debug information in the shaders.
    // Setting this flag improves the shader debugging experience, but still allows
    // the shaders to be optimized and to run exactly the way they will run in
    // the release configuration of this program.
    dwShaderFlags |= D3DCOMPILE_DEBUG;
#endif

    ID3DBlob* pErrorBlob;
    hr = D3DX11CompileFromFile( szFileName, NULL, NULL, szEntryPoint, szShaderModel,
        dwShaderFlags, 0, NULL, ppBlobOut, &pErrorBlob, NULL );
    if( FAILED(hr) )
    {
        if( pErrorBlob != NULL )
            OutputDebugStringA( (char*)pErrorBlob->GetBufferPointer() );
        if( pErrorBlob ) pErrorBlob->Release();
        return hr;
    }
    if( pErrorBlob ) pErrorBlob->Release();

    return S_OK;
}


W ich przykładowym kodzie nie ma także tego :

float4 VS( float4 Pos : POSITION ) : SV_POSITION
    {
        return Pos;
    }


float4 PS( float4 Pos : SV_POSITION ) : SV_Target
    {
        return float4( 1.0f, 1.0f, 0.0f, 1.0f );    // Yellow, with Alpha = 1
    }


A opisują to w samouczku ... Zdaję mi się że tworzy to jakieś dane pod vertex shader i pixel shader ale nie jetem właśnie pewien ... , chyba w pierwszym przypadku chodzi o pozycje wierzchołków a w drugim po prostu ustalają kolor czyż nie ?- Ale w takim razie dlaczego tego nie wywołali ? Mogły ktoś bardziej doświadczony pomóc i opisać funkcję powyżej ?

3
Szkółka / GDI w grach
« dnia: Lipiec 28, 2010, 21:00:07 »
Witam jako początkujący cały czas zastanawiam się nad jednym pytaniem na które nie potrafię odpowiedzieć, a mianowicie :

Jak zaprogramować proste GDI, przykładowo w takim Starcraft mamy parę okien na samy dole które informują gracza o parametrach jednostki bądź budynku, pokazują mapę itd ... :

http://i26.tinypic.com/99e0j7.jpg

i teraz zastanawia mnie jak to wygląda w praktyce ? Czy te okna to kilka bitmap które pod odpowiednich działaniach na współrzędnych i zdarzeniach odbierają komunikat i np. pokazują parametry jednostki, portret itp.. ? Czy może to okna podrzędne względem okna gry posiadające odpowiednie przyciski określone przez bitmapy ?

4
Szkółka / Direct3D - sposób nauki
« dnia: Lipiec 27, 2010, 17:04:38 »
Nie wiem czy taki temat już istnieje ale ... no po prostu muszę się spytać bardziej doświadczonych :

Jak u was wyglądały początki Direct3D ? - czy też przeglądaliście najprostsze kody, dokładnie analizowaliście , a następnie próbowaliście coś samemu wyskrobać choć nie do końca
było to udane ...

Chciałem się  także spytać czy istnieje jakiś inny sposób na naukę owej biblioteki, gdyż ten jest bardzo ciężki mam na myśli to iż łatwo pogubić się we wszystkich strukturach, funkcjach, typach wyliczeniowych ....

Chciałbym jeszcze spytać się czy skoro zacząłem naukę w Direct3D 11.0 - czy to był to dobry ruch z mojej strony? czy może jednak  powonieniem przesiąść się na Direct3D 9.0, który wydaje mi się prostszy patrząc na przykładowe kody programu.

5
DirectX / Direct3D 11.0 "Okno pojawia się i zaraz znika"
« dnia: Lipiec 26, 2010, 23:42:46 »
Wątpię by komuś chciało się ściągać i sprawdzać kod no ale ;p
Witam tak jak w temacie mam problem z oknem w podstawowej aplikacji Direct3D 11.0

Wspierając się dokumentacją SDK(June 2010) postanowiłem pouczyć się Direct3D 11.0, na początku wychodziło mi całkiem nieźle, fakt że odpowiedzi na wszystkie pytania początkującego tam nie znajdę ale jak na początek to dobre samouczki ;] No więc dzięki dokumentacjom i przykładowemu kodowi z pierwszego samouczka o podstawach Direct3D 11 postanowiłem napisać własną aplikacje która na początek wyświetlała by okienko o określonym kolorze tła ...

Podłączyłem wszystkie lib i pliki header, ustaliłem ścieżki w VC++Directories, napisałem kod i wreszcie dumny tego iż kompilator nie wskazuje żadnych błędów odpaliłem ów program.

Niestety okno pokazał się ledwo na sekundę i znikło z mych oczu. Podejrzewam iż spartaczyłem gdzieś sprawę z funkcją Inicjującą zasoby Direct i wywołującą metody działające na buforach, nie jestem jednak do końca pewny ...

Proszę także o łagodną ocenę, to mój pierwszy program w Direct.

Na wszelki wypadek podam tutaj kod funkcji inicjującej :
HRESULT DeviceInit()
{
HRESULT hr = S_OK;
UINT width = 640;
UINT height = 480;
DXGI_SWAP_CHAIN_DESC sd;
ZeroMemory(&sd,sizeof(sd));
sd.BufferCount = 1;
sd.BufferDesc.Height = height;
sd.BufferDesc.Width = width;
sd.BufferDesc.RefreshRate.Numerator = 60;
sd.BufferDesc.RefreshRate.Denominator = 1;
sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
sd.SampleDesc.Count = 1;
sd.SampleDesc.Quality = 0;
sd.OutputWindow = g_hWnd;
sd.Windowed = TRUE;

D3D_FEATURE_LEVEL FeatureLevelRequested = D3D_FEATURE_LEVEL_11_0;
UINT numberLevelsRequested = 1;
    D3D_FEATURE_LEVEL  FeatureLevelsSupported;
       if(FAILED(hr = D3D11CreateDeviceAndSwapChain(NULL,D3D_DRIVER_TYPE_HARDWARE,NULL,0,&FeatureLevelRequested,numberLevelsRequested,D3D11_SDK_VERSION,
&sd,&g_pSwapChain,&g_pDevice,&FeatureLevelsSupported,&g_pImmediateDevice )))
   {
   return hr;
   }

ID3D11Texture2D* pBackBuffer;

hr = g_pSwapChain->GetBuffer(0,__uuidof( ID3D11Texture2D),
( LPVOID* )&pBackBuffer );

hr = g_pDevice->CreateRenderTargetView(pBackBuffer,NULL,&g_pRenderTargetView);

g_pImmediateDevice->OMSetRenderTargets(1,&g_pRenderTargetView,NULL);



D3D11_VIEWPORT vp;
vp.Height =(FLOAT) height;
vp.Width =(FLOAT) width;
vp.MaxDepth = 1.0f;
vp.MinDepth = 0.0f;
vp.TopLeftX = 0;
vp.TopLeftY = 0;
g_pImmediateDevice->RSSetViewports(1,&vp);
return S_OK;
}

6
Witam przejdę odrazu do problemu :

otóż mam zdeklarowaną przykładową klasę Potwora :

class cMonster
{
public:
int HP;
const static int HP_MAX = 60;
int damage;
int armor;
int Sila;
// konstruktory
cMonster(){damage = 10, armor = 20, Sila = 15;}
// destruktor
virtual ~cMonster(){};
// metody
int Random();
};
// jej implementacja zawarta jest w main.cpp

Stworzyłem do niej także klase pochodną :

class cWolf: public cMonster
{
public:
int Ryk();
cWolf(){damage = 20,armor=22,Sila=20;}
};
I teraz chcąc odwołać się do klasy pochodnej stworzyłem wskaźnik na obiekt klasy bazowej cMonster i przypisałem do niego obiekt cWolf.
W ten sposób:
// wskaźnik na obiekt  klasy cMonster
cMonster *monster = new cWolf;
Gdy sprawdzam wartość zmiennych w programie np. armor, damage itp .. to zgadzają się , jednak gdy chcę odwołać się do metody przykładowej w tym wypadku Ryk(); Nie mogę tego uczynić z nieznanych mi powodów ...

Czy ktoś mógł by uświadomić mi moje błędy?

// Odpowiedź do poniżej żeby nie zaśmiecać - dzięki nie przerobiłem jeszcze rzutowania z klasami ale się za nie właśnie zabieram;]
Dziękuję za pomoc

7
Allegro / Niszczenie bitmapy poprzedniego poprzedniego poziomu planszy
« dnia: Lipiec 30, 2009, 22:01:04 »
Witam tak jak w temacie chciał bym się  dowiedzieć czy aby usunąć bitmape rysująca jakiś poziom planszy, zawartą w tablicy  należy  usunąć ją tak jak zwykłą bitmapę i utworzyć nowe bitmapy zawierające w większość ta samą grafikę  pod kolejny poziom planszy.

Czy istnieje jakiś inny sposób by wykorzystać te same bitmapy po raz "n" z możliwością ich usunięcia i utworzenia nowej planszy opierającej się na nowych i starych bitmapach. 

8
Allegro / Allegro nie udało sie wczytać bitmapy
« dnia: Lipiec 25, 2009, 15:22:14 »
Witam wszystkich  nie dawno zacząłem się uczyć w programować z użyciem biblioteki 2D Allegro, musze przyznać iż jest  całkiem fajna:D

Ale do rzeczy mój problem polega na nieudanym wczytaniu bitmapy gdy chce wczytać dany obraz jakiegoś ludka okazuje się to  niemożliwe xD informuje mnie o tym warunek który stworzyłem, nie wiem co jest źle może źle podaje ścieżke wiem że nazwy folderów są dobre .

Tu kod programu :

#include <allegro.h>
int main()
{
allegro_init();
install_keyboard();
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT_FULLSCREEN,800,600,0,0);
clear_to_color(screen,makecol(128,128,128));
    BITMAP *ludek = NULL;
ludek = load_bmp("C:\\Programy\\xD\\Ludek.bmp",default_palette);
if(!ludek)
{
set_gfx_mode(GFX_TEXT,0,0,0,0);
allegro_message("Nie udalo sie wczytac bitmapy");
allegro_exit();
return 0;
}
blit (ludek,screen,0,0,100,100,ludek->w,ludek->h);
readkey();
destroy_bitmap(ludek); 
allegro_exit();
return 0;
}
END_OF_MAIN();

Gdy komplikuje program  komunikat powiadamia mnie o tym że nie da się wczytać  bitmapy. Pytanie dlaczego?

9
Szkółka / Visual c++ 2008 Express Edition problem z rejestracją
« dnia: Lipiec 15, 2009, 14:36:10 »
Witam wszystkich żeby nie owijać w bawełnę od razu przedstawię swój problem.

No więc programowałem sobie już od jakiegoś dłuższego czasu w Visual c++ 2008, aż tu pewnego dnia wracam z wakacji patrze i ..
Wyskakuje komunikat o darmowej rejestracji Potrzebnej do działania programu.
No więc udaje się na stronę  ukazaną w komunikacie,rejestruje się i nagle ukazuje się taki oto błąd :


Nie można wykonać żądania

Podczas tworzenia konta wystąpiły problemy techniczne z usługą Windows Live ID. Aby rozpocząć korzystanie z usługi Windows Live dziś, uzyskaj pomoc teraz, kliknij tutaj, wybierz opcję Windows Live ID i skopiuj kod poniżej, a następnie wklej go do formularza.
LEFKPK~OIUPMQWRQUXWU^_

Czy ktoś mógł by mnie oświecić? bo ja tego za bardzo nie czaje  próbowałem się jeszcze rejestrować kilka razy ale nic to nie dało cały czas wyskakuje ten głupi error.

Dziękuje za wszelką udzieloną mi pomoc ;]

Strony: [1]