 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 22.01.2006, 14:52 Titel: |
|
|
Also, habe euren tipp, eure lösung verwendet, es ist auch besser geworden, doch wenn ich die maus schneller in eine richtung bewege, dann zieht er das viereck hinterher, das sieht sehr unschön aus, hat jemand einige tipps? |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 22.01.2006, 18:19 Titel: |
|
|
Viereck hinterherziehen? Normaelrweise müsste doch das Viereck imemr dort gezeichnet werden wo die Maus auch ist oder? Zeig am besten mal, wie du er Rendest, dann findet man vielleicht den Fehler.
Es stimtm natürlcih das eignetlich die Zeit vom letzen Frame für die Bewegung des neuen Frames genommen wird, aber eigentlich ma ht das nix, mir ist es in meinen ganzen Projekten jednefalls nie aufgefallen. Normalerweise hat man ja eh nicht so riesige Schwankungen, und wenn shalt mal von 40 auf 30 frames rtner geht, ist das im Prinzip ein Geschwindigkeits Unterschied von 25% was an sich shcon net viel ist, und wenn das dann schon nur für 1/30 Sekunde so ist, und das Auge aus dne Einzelbilder sich einen Bewegung erdenkt, merkt man das überhaupt gar net. Außerdem sagt man ja, das die Reaktionszeit so um die 1 sek beträgt, daher wird das Gehirn wohl gar net flink genug sein, da irgendwas zu merken. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 23.01.2006, 14:15 Titel: |
|
|
Also ich zeige dir mal etwas mehr so das du das verstehst:
Hier erstmal die Spieleschleife:
CPP: | while (bRunning)
{
//Handle messages
if (PeekMessage (&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
ClearBuffer();
BeginDrawing();
BeginBatchDrawing(texture);
DrawTile();
CheckMouse();
ProcessInput();
EndBatchDrawing();
EndDrawing();
Present();
}
|
Dazu noch die Map init:
CPP: | char map[WORLD_SIZEY][WORLD_SIZEX]={
{6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3},
{6,6,6,6,6,6,6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{6,6,6,6,6,6,6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{6,6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3},
{6,6,4,4,4,4,1,1,1,1,1,1,1,1,1,4,3,3,3,3,3,3,3,3,3,3,3},
{6,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,4,3,3,4,3,3,3,3,3,3},
{4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,3,3,3},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3},
{2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3}};
|
wie gesagt der holt die tiles aus einer png datei, dabei steht die 1 für das erste tile in der datei, die 2 für den zweiten tile, usw.
Jetzt die Direct3D init:
CPP: | int InitD3D (int resWidth, int resHeight, D3DFORMAT resFormat, HWND hWnd, BOOL bWindowedMode)
{
HRESULT hr;
//Erstellt das direct 3d objekt
d3d = Direct3DCreate9(D3D_SDK_VERSION);
ZeroMemory (&d3dCaps, sizeof(d3dCaps));
if (FAILED(d3d->GetDeviceCaps (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &d3dCaps)))
return FALSE;
ZeroMemory(&d3dPresent,sizeof(d3dPresent));
d3dPresent.SwapEffect = D3DSWAPEFFECT_FLIP;
d3dPresent.hDeviceWindow = hWnd;
d3dPresent.BackBufferCount = 1;
//Check if windowed
if (bWindowedMode)
{
D3DDISPLAYMODE d3ddm;
RECT rWindow;
//Get display mode
d3d->GetAdapterDisplayMode (D3DADAPTER_DEFAULT, &d3ddm);
//Get window bounds
GetClientRect (hWnd, &rWindow);
//Setup screen dimensions
resWidth = rWindow.right - rWindow.left;
resHeight = rWindow.bottom - rWindow.top;
//Setup backbuffer
d3dPresent.Windowed = true;
d3dPresent.BackBufferFormat = d3ddm.Format;
d3dPresent.BackBufferWidth = rWindow.right - rWindow.left;
d3dPresent.BackBufferHeight = rWindow.bottom - rWindow.top;
}
else
{
d3dPresent.Windowed = false;
d3dPresent.BackBufferWidth = resWidth;
d3dPresent.BackBufferHeight = resHeight;
d3dPresent.BackBufferFormat = resFormat;
}
//Check if hardware vertex processing is available
if (d3dCaps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
{
//Create device with hardware vertex processing
hr = d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL, hWnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dPresent, &d3dDevice);
}
else
{
//Create device with software vertex processing
hr = d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dPresent, &d3dDevice);
}
//Make sure device was created
if (FAILED(hr))
return FALSE;
//Setup Direct3D for rendering
InitRendering (resWidth, resHeight);
return TRUE;
}
|
Anschließend, noch in der Direct3D initialisierung wird die Rendering funktion aufgeruft:
CPP: | void InitRendering (int resWidth, int resHeight)
{
D3DXMATRIX matOrtho;
D3DXMATRIX matIdentity;
//Setup an orthographic perspective
D3DXMatrixOrthoLH (&matOrtho, (float) resWidth, (float) resHeight, 1.0f, 10.0f);
D3DXMatrixIdentity (&matIdentity);
d3dDevice->SetTransform (D3DTS_PROJECTION, &matOrtho);
d3dDevice->SetTransform (D3DTS_VIEW, &matIdentity);
d3dDevice->SetTransform (D3DTS_WORLD, &matIdentity);
//Erstellt ein Vertex Buffer
d3dDevice->CreateVertexBuffer(4 * sizeof(TLVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_TLVERTEX, D3DPOOL_MANAGED, &vertexBuffer, NULL);
//Die Funktion SetStreamSource verbindet den Vertex Buffer mit dem Schnitstellen Daten Strom
//Dient zur versorgung mit daten der Verarbeitung Funktionen
d3dDevice->SetStreamSource(0, vertexBuffer, 0, sizeof(TLVERTEX));
//Erstellt ein Aufstappel Vertex Buffer
d3dDevice->CreateVertexBuffer(BATCH_BUFFER_SIZE * sizeof(TLVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_TLVERTEX, D3DPOOL_MANAGED, &vertexBatchBuffer, NULL);
//Erstellt ein Index Buffer
d3dDevice->CreateIndexBuffer (BATCH_BUFFER_SIZE * 3, D3DUSAGE_WRITEONLY, D3DFMT_INDEX16, D3DPOOL_MANAGED, &indexBatchBuffer, NULL);
d3dDevice->SetIndices(indexBatchBuffer);
numBatchVertices = 0;
//Der Index Buffer wird gefüllt
FillIndexBuffer ();
//Setup vertex format
d3dDevice->SetVertexShader(NULL);
d3dDevice->SetFVF (D3DFVF_TLVERTEX);
//Set render states
d3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
d3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
d3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
d3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
d3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
}
|
in meiner spiele schleife sind ja noch die BeginBatchDrawing und EndBatchDrawing, ich gebe dir mal die implementierung:
CPP: | void BeginBatchDrawing (IDirect3DTexture9* texture)
{
D3DXMATRIX matIdentity;
D3DSURFACE_DESC surfDesc;
//Der Batching (Aufstappel) Buffer wird gesperrt
numBatchVertices = 0;
vertexBatchBuffer->Lock (0, BATCH_BUFFER_SIZE * sizeof(TLVERTEX), (void **) &batchVertices, 0);
//texture dimensionen werden geholt (Länge, Breite)
texture->GetLevelDesc (0, &surfDesc);
batchTexWidth = (float) surfDesc.Width;
batchTexHeight = (float) surfDesc.Height;
//Die texture wird nun eingetsellt, mit der nun eingegeben Größe
d3dDevice->SetTexture (0, texture);
//Set world matrix to an identity matrix
//D3DXMatrixIdentity (&matIdentity);
//d3dDevice->SetTransform (D3DTS_WORLD, &matIdentity);
//der Daten Strom wird nun mit dem Batch Buffer verbunden
d3dDevice->SetStreamSource (0, vertexBatchBuffer, 0, sizeof(TLVERTEX));
}
|
CPP: | void EndBatchDrawing()
{
//Unlock vertex buffer
vertexBatchBuffer->Unlock();
//Draw the quads in the buffer if it wasn't just flushed
if (numBatchVertices)
d3dDevice->DrawIndexedPrimitive (D3DPT_TRIANGLELIST, 0, 0, numBatchVertices, 0,
numBatchVertices / 2);
//Set stream source to regular buffer
d3dDevice->SetStreamSource (0, vertexBuffer, 0, sizeof(TLVERTEX));
//Reset vertex count
numBatchVertices = 0;
}
|
so und jetzt noch die funktionen für die tiles:
Erstmal die funktion die die beriche festlegt welches tile genommen wird und wohin es gelegt werden soll.
CPP: | void DrawTile()
{
int tile;
int scroll_x = 0, scroll_y = 0;
int offset_x, offset_y;
for(int loop_y = 0 ; loop_y < SCREEN_SIZEY; loop_y++)
{
for(int loop_x = 0 ; loop_x < SCREEN_SIZEX; loop_x++)
{
offset_x = loop_x;
offset_y = loop_y;
scroll_x = loop_x + world_camerax;
scroll_y = loop_y + world_cameray;
tile = map[scroll_y][scroll_x];
rSource = MakeRect((tile - 1)* TILE_SIZE, tile * TILE_SIZE, 0, TILE_SIZE);
rDest = MakeRect( loop_x * 32 , 32, loop_y * 32, 32);
//------------------left-----right-----top----bottom----------
//rDest = MakeRect ( (loop_x * TILE_SIZE) - offset_x , 32, (loop_y * TILE_SIZE) - offset_y, 32);
AddQuad(&rSource, &rDest, 0xFFFFFFFF);
//x * TILE_SIZE) - offset_x, (y * TILE_SIZE) - offset_y, lpddsoffscreen, &tile_src, NULL);
//( x * 32 , 32, y * 32, 32);
}
}
}
|
Jetzt noch die Funktion AddQuad:
CPP: | void AddQuad (RECT* rSource, RECT* rDest, D3DCOLOR colour)
{
float X;
float Y;
float destWidth;
float destHeight;
//Die Koordinaten werden berechnet wo später das Quad erscheihnen sollen
X = rDest->left - (float)(d3dPresent.BackBufferWidth) / 2;
Y = -rDest->top + (float)(d3dPresent.BackBufferHeight) / 2;
destWidth = (float)(rDest->right /*- rDest->left*/);
destHeight = (float)(rDest->bottom /*- rDest->top*/);
//Setup vertices in buffer
batchVertices[numBatchVertices].colour = colour;
batchVertices[numBatchVertices].x = X;
batchVertices[numBatchVertices].y = Y;
batchVertices[numBatchVertices].z = 1.0f;
batchVertices[numBatchVertices].u = rSource->left / batchTexWidth;
batchVertices[numBatchVertices].v = rSource->top / batchTexHeight;
batchVertices[numBatchVertices + 1].colour = colour;
batchVertices[numBatchVertices + 1].x = X + destWidth;
batchVertices[numBatchVertices + 1].y = Y;
batchVertices[numBatchVertices + 1].z = 1.0f;
batchVertices[numBatchVertices + 1].u = rSource->right / batchTexWidth;
batchVertices[numBatchVertices + 1].v = rSource->top / batchTexHeight;
batchVertices[numBatchVertices + 2].colour = colour;
batchVertices[numBatchVertices + 2].x = X + destWidth;
batchVertices[numBatchVertices + 2].y = Y - destHeight;
batchVertices[numBatchVertices + 2].z = 1.0f;
batchVertices[numBatchVertices + 2].u = rSource->right / batchTexWidth;
batchVertices[numBatchVertices + 2].v = rSource->bottom / batchTexHeight;
batchVertices[numBatchVertices + 3].colour = colour;
batchVertices[numBatchVertices + 3].x = X;
batchVertices[numBatchVertices + 3].y = Y - destHeight;
batchVertices[numBatchVertices + 3].z = 1.0f;
batchVertices[numBatchVertices + 3].u = rSource->left / batchTexWidth;
batchVertices[numBatchVertices + 3].v = rSource->bottom / batchTexHeight;
//Increase vertex count
numBatchVertices += 4;
//Flush buffer if it's full
if (numBatchVertices == BATCH_BUFFER_SIZE)
{
//Unlock vertex buffer
vertexBatchBuffer->Unlock();
//Draw quads in the buffer
d3dDevice->DrawIndexedPrimitive (D3DPT_TRIANGLELIST, 0, 0, numBatchVertices, 0,
numBatchVertices / 2);
//Reset vertex count
numBatchVertices = 0;
//Lock vertex buffer
vertexBatchBuffer->Lock (0, BATCH_BUFFER_SIZE * sizeof(TLVERTEX), (void **)
&batchVertices, 0);
}
}
|
Also das ist der ganze code, also das meißte habe ich von einem Tutorial kopiert, deswegen habe ich das mit dem rendern nicht so ganz verstanden, vielleicht könntest du mir das etwas veranschaulichen worauf ich achten muss.
Hallo, also habe etwas rausgefunden, wenn mein programm im fenster Modus läuft ist alles sehr schön, doch wenn ich auf Vollbildmodus umschalte wirkt das bild verschwomen und der rahmen wird hinterher gezogen, warum eigentlich nur im Vollbildmodus???
Edit by Mod: Benutze doch bitte [ cpp ] statt [ code ], das ist gleich viel schöner. |
|
Nach oben |
|
 |
Clythoss Junior JLI'ler

Alter: 44 Anmeldedatum: 04.05.2005 Beiträge: 64 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 25.01.2006, 15:15 Titel: |
|
|
Tja sorry, Genau hier verlässt´s mich
Ich hoffe mal Jonathan_Klein kann dir helfen.
Bei mir läuft das so
1.) Maus Cursor poition notieren
2.) Bild in Puffer zeichnen
3.) Viereck in Puffer zeichnen (Anhand der gemerkten position)
4.) Mousecursor in Puffer zeichnen (Anhand der gemerkten position)
5.) Den Puffer auf den Bildschirm bliten
Damit ist ein Problem wie du es beschreibst nicht möglich, da sich die Position des Cursors im Laufe des Renderns ja nicht mehr verändern kann. Keine Ahnung ob sich das so in Direkt 3d übertragen lässt. _________________ Derzeitiges Projekt : Wing Fusion
Status: Es geht vorwärts...
-------------------------------------------------------
E=MC²+1W6 |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 25.01.2006, 19:57 Titel: |
|
|
Muss mich korriegieren, nicht nur wenn er im vollbildmodus läuft zieht er den rahmen hinterher sondern auch im fenster modus, ich habe keine ahnung warum..... bitte um hilfe
MEine Funktion sieht so aus:
CPP: | void CheckMouse()
{
POINT point;
int tile = 7;
int mousex = 0;
int mousey = 0;
GetCursorPos(&point);
ScreenToClient(hWnd,&point);
mousex = point.x / 32 ;
mousey = point.y / 32;
//------------------left----.-right-----top----bottom----------
rDest = MakeRect ( mousex * 32 , /*mousex * 32 +*/ 32, mousey * 32, /*mousey * 32 +*/ 32);
//rechteck (maustile.x*32,maustiley*32,maustile.x*32+32,maustile.y*32+32);
AddQuad(&rSourceC, &rDest, 0xFFFFFFFF);
}
|
erst werden die mauskoordinaten geholt und es wird bestimmt auf welchem tile er sich befindet, danach wird bei rDest der bestimmungsort wo derrahmen hin gezeichnet werden soll bestimmt, und durch AddQuad wird es in den Puffer gelegt, die AddQuad funktion ist in meinem vorherigen beitrag drin.
Das ist doch alles gut, ich verstehe nicht warum der rahmen hinterher gezeichnet wird??? |
|
Nach oben |
|
 |
Clythoss Junior JLI'ler

Alter: 44 Anmeldedatum: 04.05.2005 Beiträge: 64 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 26.01.2006, 07:22 Titel: |
|
|
Die Logic lässt meiner Meinung nach nur einen Schluss zu.
Bei dir passiert folgendes.
Schritt 1: Prüfe wo die Maus ist
Schritt 2: Male das Viereck
Schritt 3: Mache irgendwelchen andern kram (verbraucht Zeit)
Schritt 4: Prüfe wo die Maus ist
Schritt 5: Zeichne den Maus-Cursor.
Nur das kann erklären warum wenn du die Maus schnell bewegst, Die Koordinaten für Cursor und Viereck unterschiedlich sind. Ist doch Klar wenn Die Maus im moment des Vierecks malen bei 100.100 ist, aber beim cursor malen auf 200.200 entsteht der beschrieben Effekt.
Also mach es so
Schritt 1: Prüfe wo die Maus ist und lege die Koordinaten in einer variable ab
Schritt 2: Male das Viereck
Schritt 3: Mache irgendwelchen andern kram (verbraucht Zeit)
Schritt 4: Zeichne den Maus-Cursor, anhand der Koordinaten die in der Variable stehen
BTW: Mach doch mal nen eigenen Projekt Thread auf, ich besuch dich auch , dann kannste auch nen DL anbieten das man dein Problem optisch auch sieht. _________________ Derzeitiges Projekt : Wing Fusion
Status: Es geht vorwärts...
-------------------------------------------------------
E=MC²+1W6 |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 26.01.2006, 16:14 Titel: |
|
|
Hi, jo danke
wenn ich zu hause bin dann versuche ich das gleich mal.
Aber was ich noch fragen wollte, wie meinst du das mit dem Maus Cursor zeichnen????
Weil ich zeichne den cursor doch niergendswo??
Ich glaube ich mach auch ein Projekt dann auf.... |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 26.01.2006, 19:12 Titel: |
|
|
Vane hat Folgendes geschrieben: | Hi, jo danke
wenn ich zu hause bin dann versuche ich das gleich mal.
Aber was ich noch fragen wollte, wie meinst du das mit dem Maus Cursor zeichnen????
Weil ich zeichne den cursor doch niergendswo??
Ich glaube ich mach auch ein Projekt dann auf.... |
ich glaube er meint, das:
Wenn du einen eigenen Cursor hast (mit DirectX oder so) musst du den ja rendern. Das dann weglassen.
oder
wenn du den Standard-Cursor nimmst, gibt es Funktionen in der WinAPI(glaub ShowCursor(), musst ma die MSDN durchblättern) mit denen du den Corsor zeichen ( =anzeigen ) oder verstecken kanns
Gruß DXer |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 26.01.2006, 21:23 Titel: |
|
|
Ich habe das so verstanden, das man den cursor, anhand der koordinaten die man sich vorher geholt hat und in eine variable gespeichert hat, an die stelle zeichnet, oder? |
|
Nach oben |
|
 |
Clythoss Junior JLI'ler

Alter: 44 Anmeldedatum: 04.05.2005 Beiträge: 64 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 27.01.2006, 06:48 Titel: |
|
|
Exakt! Das macht es technisch völlig unmöglich das das von dir beschriebene Problem auftauchen kann. _________________ Derzeitiges Projekt : Wing Fusion
Status: Es geht vorwärts...
-------------------------------------------------------
E=MC²+1W6 |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 27.01.2006, 11:54 Titel: |
|
|
Geht das nur unter DirectInput oder auch mit der WinAPI, weil ich benutzte ja schon diese beiden funktionen aus der WinAPI
CPP: | GetCursorPos(&point);
ScreenToClient(hWnd,&point);
|
|
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 27.01.2006, 12:19 Titel: |
|
|
Wenn du die Cursorposition so holst, den WindowsCursor ausblendest und deinen eigenen zeichnest muss das auch so gehen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 27.01.2006, 12:29 Titel: |
|
|
wie zeichne ich den cursor selbst welche funktionen soll ich den dafür verwenden? |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 27.01.2006, 12:43 Titel: |
|
|
ei, einfahc n Bitmap an der Richtigen Stelle zeichnen. Halt was cooles, ne Hand oder so, wie mans aus X Computerspielen kennt. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Vane Junior JLI'ler
Anmeldedatum: 03.11.2005 Beiträge: 70
Medaillen: Keine
|
Verfasst am: 27.01.2006, 13:23 Titel: |
|
|
Also ich würde das nun so machen:
1. Ganz am anfang meiner spiele schleife holle ich die position der maus und speichere die in einer globalen variabel, danach schalte ich den Windows Cursor aus.
2. Danach zeichne ich meine tile map und alles andere was ansteht, inclusive mein rahmen.
3. anhand der koordinaten in den variablen zeichne ich dann mein eigenen cursor.
Ist das so gut oder bekomme ich da andere konflikte? |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|