dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

C builder
Goto page Previous  1, 2, 3, 4  Next
 
dev.gamez.lv Forum Index -> Iesācējiem
View previous topic :: View next topic  
Author Message
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Jan 04, 2008 6:19 pm    Post subject:

Ne C, ne C++ nav vienkārši. Tikai ar labu pieredzi tajos var abas valodas izmantot efektīvi. Iesācējam abas valodas var likties vienlīdz sarežģītas. Vienīgi C++'ā daudzas lietas var izdarīt drusku vienkāršāk un efektīvāk (rakstāmā koda ziņā).
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Fri Jan 04, 2008 6:22 pm    Post subject:

Runaajot par teemu C++ un C kurs vieglaaks- manupraat praatiigi ir nejaukt sev galvu, neteeereet laiku un maaciities to, kas ir vajadziigs - respektiivi C++ Un neviens nespiez ar varu lietot kaadu "gruutu" C++ fiichu tikai taapeec ka C++ taada ir. Ieguvumi : 1)aatraak apgsi vajadziigo valodu 2)Nejauksi sev galvu ar C/C++ sintaksi 3)C++ lielaaka zinaasanu baaze internetaa - veel aatraak apguusi nepieciesamo Nepielec man, kaapeec cilveekam vajadzeetu maaciities C un tad tikai C++

P.S Un veel labaak, no manis persooniigs ieteikums - raksti nevis garus filozofiskus paarspriedumus, bet saac rakstiit programmas. Galvenais ko vajag atcereeties - ja tu maacies kko jaunu, tad nekad nemaacies konkreetajai sfeerai kaadu vecu piegaajienu, nu piemeeram ja gribi zinaat C valodas tad maacies C++ , ja gribi 2D kko DX ziimeet - tad maacies D3D nevis DirectDraw utt.
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Fri Jan 04, 2008 7:08 pm    Post subject:

Quote:
Un neviens nespiez ar varu lietot kaadu "gruutu" C++ fiichu tikai taapeec ka C++ taada ir.

Tas pats, ko es saku - jāmācās C++, bet pagaidām no tā labumiem vēl nekas nav vajadzīgs izņemot sīkumus

došu piemēru.
http://www.directxtutorial.com/Tutorial9/B-Direct3DBasics/dx9B1.aspx
Code:

//KODU IZņēMU, TAS IR AIZ AUGSTāK NORāDīTā LINKA, LAPAS APAKšā, JāSPIEž "SHOW CODE"

parādiet man tur kautko sarežģītu no C++
vienīgi..
Code:

d3ddev->BeginScene();

...šādas funkcijas, to izsaukumi!
neko vairāk sākumam no C++ nebūtu jāzina...
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
kkeemmss



Joined: 04 Jan 2007
Posts: 232
Location: Riga

PostPosted: Mon Jan 07, 2008 9:18 pm    Post subject:

Tas pats tutoriālis ir labs, un pliku logu ar izdevās uztaisīt, bet roblēmas notiek ejot fulscreenā

Code:
// this function initializes and prepares Direct3D for use
void initD3D(HWND hWnd)
{
    d3d = Direct3DCreate9(D3D_SDK_VERSION); // create the Direct3D interface

    D3DPRESENT_PARAMETERS d3dpp; // create a struct to hold various device information

    ZeroMemory(&d3dpp, sizeof(d3dpp));    // clear out the struct for use
    d3dpp.Windowed = FALSE;    // program fullscreen, not windowed
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;    // discard old frames
    d3dpp.hDeviceWindow = hWnd;    // set the window to be used by Direct3D
    d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;    // set the back buffer format to 32-bit
    d3dpp.BackBufferWidth = SCREEN_WIDTH;    // set the width of the buffer
    d3dpp.BackBufferHeight = SCREEN_HEIGHT;    // set the height of the buffer


    // create a device class using this information and the info from the d3dpp stuct
    d3d->CreateDevice(D3DADAPTER_DEFAULT,
                      D3DDEVTYPE_HAL,
                      hWnd,
                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                      &d3dpp,
                      &d3ddev);

    return;
}


un konkrētāk, kad šito izmainu
d3dpp.Windowed = FALSE;

un/vai pielieku klāt šito rindiņu
d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;

Tad es iegūstu šādu paziņojumu
Code:
Unhandled exception at 0x00411808 in projekts001.exe: 0xC0000005: Access violation reading location 0x00000000.


un dzeltena bultiņa norāda uz d3ddev->Clear()

Code:
void render_frame(void)
{
    // clear the window to a deep blue
    d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 40, 100), 1.0f, 0);
...


kāds pateiks ko tas nozīmē un kā ar sito problemu tikt galā?

Edit:
lSCREEN_WIDTH un SCREEN_HEIGHT ir 640 X 480


Last edited by kkeemmss on Mon Jan 07, 2008 9:52 pm; edited 1 time in total
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Mon Jan 07, 2008 9:26 pm    Post subject:

tas noziimee, ka d3d nav korekti inicializeejies
njem ieliec kompii d3dx debug (ja vajag)
un panjem directx control panelii pamaini runtime no retail uz debug un aizvelc pa kreisi esosho sliideri gandriiz uz max
dx control panelim jaabuut ieksh SDK/... mapes kautkur

veelkas - paraadi, kas tev ir screen_width un screen_height
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Mon Jan 07, 2008 10:18 pm    Post subject:

"Access violation reading location 0x00000000." nozīmē, ka tiek lasīta 0 atmiņa. No tevis dotā koda, 0 varētu būt tikai 2 mainīgie - d3d un d3ddev. d3d droši vien tas nebūs, tāpēc noteikti d3ddev ir 0. Tas nozīmē, ka esi padevis CreateDevice nepareizus parametrus, vai arī uz sistēmas nav uzstādīts directx 9 (vienmēr vajag pārbaudīt rezultātu).
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
kkeemmss



Joined: 04 Jan 2007
Posts: 232
Location: Riga

PostPosted: Mon Jan 07, 2008 10:29 pm    Post subject:

darbā strādāju pie (no galvas neatceros) veca kompja ar integrētu 32mb videokarti.
direct x9 ir uzinstalēts, diagnostika saka ka vis kārtībā.
Ā un tas pats kods mājās uz pentium4, Radeon X1650 tiko aizgāja bez problēmām.
Laikam jau vainīgs būs vecais darba kompis.
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Mon Jan 07, 2008 10:31 pm    Post subject:

100% ka taa
d3d'u nav jeegas laist ar reference/software device, aatrums buus mezhoniigs
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Jan 07, 2008 10:48 pm    Post subject:

kkeemmss: tad kad parādās tava "dzeltenā bultiņa", t.i. debugeris, tad uzbrauc ar peli uz d3ddev mainīgā un tev priekšā izleks tā vērtība. Ja tā ir 0 vai NULL, tas nozīmē, ka CreateDevice funkcija nav nostrādājusi.

Kā jau tev saka - vienmēr pārbaudi vai funkcija nostrādā vai nē. Nav jēga tālāk kodu izpildīt, ja kautkas nofeilo.
Back to top
View user's profile Send e-mail
kkeemmss



Joined: 04 Jan 2007
Posts: 232
Location: Riga

PostPosted: Tue Jan 08, 2008 10:47 am    Post subject:

Nu esmu atkal darbā pie: Celeron 600 MHz, 256 ram, 32Mb - intel(R) 82810E

un kā jau tas bij paredzams tad mājās iesākto turpināt nevarēšu, jo d3ddev value = 0x000000 ,un CreateDevice() nav nostrādājis.

Vai tai kodā ir kāds parametrs ko pamainīt, jeb vienīgais variants ir mainīt kompi?
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Jan 08, 2008 11:24 am    Post subject:

Pamēģini BackBufferFormat'ā norādīt 16-bitu rgb tipu.
Vai arī SwapEffectu pamaini uz citiem veidiem.
Back to top
View user's profile Send e-mail
kkeemmss



Joined: 04 Jan 2007
Posts: 232
Location: Riga

PostPosted: Fri Jan 11, 2008 4:35 pm    Post subject:

Nu jau poliboni zīmējās, arī tekstūru klāt piedabūju, bet problēmas radās ar gaismu. sekojot tutoriālim lietoju sitādus FVF
Code:
struct CUSTOMVERTEX {FLOAT X, Y, Z; D3DVECTOR NORMAL; FLOAT U, V;};
#define CUSTOMFVF (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1)

un vēlāk veidojot grafiku lietoju
Code:
    CUSTOMVERTEX t_vert[] =
    {
        // side 1
        { -3.0f,  3.0f, -3.0f, 0, 0, -1, 0, 1, },
        {  3.0f,  3.0f, -3.0f, 0, 0, -1, 1, 1, },
        { -3.0f, -3.0f, -3.0f, 0, 0, -1, 0, 0, },
        {  3.0f, -3.0f, -3.0f, 0, 0, -1, 1, 0, },

        // side 2
        { -3.0f,  3.0f, 3.0f, 0, 0, 1, 0, 1, },
        { -3.0f, -3.0f, 3.0f, 0, 0, 1, 0, 0, },
        {  3.0f,  3.0f, 3.0f, 0, 0, 1, 1, 1, },
        {  3.0f, -3.0f, 3.0f, 0, 0, 1, 1, 0, },
...


Bet mazliet neskaidrs paliek šitā daļa
{ -3.0f, 3.0f, 3.0f, 0, 0, 1, 0, 1, },
{ 3.0f, -3.0f, -3.0f, 0, 0, -1, 1, 0, },

Es saprotu ka tam ir kāda saistība ar poligona materiālu un gaismas atstarošanu. Vai kāds pāris vārdos var paskaidrot?
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Fri Jan 11, 2008 5:28 pm    Post subject:

tie 3 ir normaalvektora x y un z
tie noraada, no kura virziena gaisma buus visspozhaakaa uz sho vertexu
tiem jaabuut starp -1 un 1
vari paeksperimenteet pamainot x un y (1. un 2.), tam juutami vajadzeetu atsaukties uz vertexa gaishumu
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Jan 11, 2008 11:01 pm    Post subject:

snake5 wrote:
tie noraada, no kura virziena gaisma buus visspozhaakaa uz sho vertexu
tiem jaabuut starp -1 un 1

Kārtējie murgi...
Normāles vektors nenorāda nekādu virzienu, kur gaisma būs spožākā. Normāles vektors norāda poligona/virsmas novietojumu telpā - tam ir jābūt perpendikulāram pret poligonu/virsmu.
Tiem skaitļiem ir jābūt ne tikai starp -1..1, bet gan galvenākais ir tas, ka to kvadrātu summai ir jābūt vienādai ar 1, t.i. normāles vektora garumam jābūt ir 1. Ja šis nosacījums netiks ievērots tiks iegūti pavisam dīvaini efekti (ar nozīmi - nepareizi) ar apgaismojumu. Videokartes savos fixed-functionality (ne-šeideros) aprēķinos balstās uz fakta, ka normāles vektora garums ir 1. Tā iznāk optimālāk, jo nevajag rēķināt divas dārgas operācijas - kvadrātsakni un dalīšanu.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Jan 12, 2008 12:03 am    Post subject:

NAV TAM VEKTORAM JĀBŪT PERPENDIKULĀRAM PRET VIRSMU pirmkārt jau tāpēc, ka katram vertexam ir savs normālvektors
griez to vektoru kā gribi, pilnīgi vienalga ir, d3d no tā nemetīs errorus
priekš vektoru normalizēšanas ir renderstate: D3DRS_NORMALIZENORMALS
ar to viss salabojas automātiski.

kā es par gaismu domāju:
gaismas atrašanās vieta - vektors lv
vertexa pozīcija - vektors vv
normālvektors - vektors nv
tad
vektors vtt = lv - vv //vai vv - lv, īsti neatceros
normalizējam vtt
jo līdzīgāki ir vtt un nv vektori, jo vertexs ir gaišāks
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Iesācējiem All times are GMT + 2 Hours
Goto page Previous  1, 2, 3, 4  Next
Page 2 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group