JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=8a4d9dd108695d5c6eb1d7e03c691afdMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Mauszeiger und Rand über Tiles
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 22.01.2006, 14:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 22.01.2006, 18:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 23.01.2006, 14:15    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Clythoss
Junior JLI'ler


Alter: 44
Anmeldedatum: 04.05.2005
Beiträge: 64
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 25.01.2006, 15:15    Titel: Antworten mit Zitat

Tja sorry, Genau hier verlässt´s mich Smile

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
Benutzer-Profile anzeigen Private Nachricht senden
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 25.01.2006, 19:57    Titel: Antworten mit Zitat

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 Crying or Very sad

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
Benutzer-Profile anzeigen Private Nachricht senden
Clythoss
Junior JLI'ler


Alter: 44
Anmeldedatum: 04.05.2005
Beiträge: 64
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 07:22    Titel: Antworten mit Zitat

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 Smile , 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
Benutzer-Profile anzeigen Private Nachricht senden
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 16:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 19:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 21:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Clythoss
Junior JLI'ler


Alter: 44
Anmeldedatum: 04.05.2005
Beiträge: 64
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 27.01.2006, 06:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 27.01.2006, 11:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.01.2006, 12:19    Titel: Antworten mit Zitat

Wenn du die Cursorposition so holst, den WindowsCursor ausblendest und deinen eigenen zeichnest muss das auch so gehen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 27.01.2006, 12:29    Titel: Antworten mit Zitat

wie zeichne ich den cursor selbst welche funktionen soll ich den dafür verwenden?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.01.2006, 12:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Vane
Junior JLI'ler



Anmeldedatum: 03.11.2005
Beiträge: 70

Medaillen: Keine

BeitragVerfasst am: 27.01.2006, 13:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
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

Impressum