.[ ČeskéHry.cz ].
DirectDraw 2D Scrolling [Skrolovanie 2D pozadia]

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Lion



Založen: 23. 01. 2008
Příspěvky: 6

PříspěvekZaslal: 7. červen 2009, 09:22:24    Předmět: DirectDraw 2D Scrolling [Skrolovanie 2D pozadia] Odpovědět s citátem

Zdravim
Pouzivam DirectDraw na vykreslovanie jednoducheho levelu
Vsetko sa deje v 2D priestore.
Mam::
LPDIRECTDRAWSURFACE lpDDSPrimary; // Primary surface
LPDIRECTDRAWSURFACE lpDDSBack; // Back surface
LPDIRECTDRAWCLIPPER lpClipper; // Clipper

Primary sufrace ma 1024x768 pixelov, Back surface a Clipper su tak isto velke.
Problemom je ze mam vytvorene okno s rozmermi 640x480 px
a toto okno NEMOZEM! spravit vacsie (potrebujem 640x480 !!!)

Chcel by som spravit nieco ako toto:


== Ze z vacsieho surfacu vykreslim len cast [640x480px] do okna a
zvysok si pamatam. Pri stlaceni klavesov sa mi tento vyrez posunie a vykreslim inu cast levelu.
Otazka je ako to spravit ???
Nemam ziadne kamery ani nic podobne ako v 3D priestore, takze neviem co s tym...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 7. červen 2009, 10:29:57    Předmět: Odpovědět s citátem

Back a primary surface (které flipuješ) si udělej podle rozměrů okna (640x480). Pozadí budeš mít v samostatné (větší) bitmapě a budeš z ní pomocí Blt s parametry zdrojového a cílového obdélníku blitovat jen výřez, který potřebuješ. Pokud navíc aplikuješ na back surface ten clipper, tak ti to sám ořeže a nemusíš se o nic starat. To co ti asi uniká je to, že blitovat můžeš do libovolné bitmapy, tedy i do toho pozadí, a teprve z něj si pak vezmeš výřez a dáš ho do surface pro obrazovku. V závilosti na tom co s tím pozadím děláš možná budeš potřebovat:
A) originální obrázek pozadí
B) ten vždycky celý zkopíruješ a dokreslíš na něj všechny objekty
C) výřez z něho plácneš na back surface a flipneš na obrazovku
Pokud bys potřeboval větší výkon, tak body A a B změníš tak, že budeš aktualizovat vždy jen to co se změnilo (když se např. panáček posune, tak na místě kde byl dáš originál bitmapu a pak ho nakreslíš znovu, místo abys kopíroval celou bitmapu) atd.

Pokud máš zájem, můžeš si tady stáhnout zdrojáky mého starého adventure enginu pro Prdel Světa, je to VC++ s DirectDraw 7, skroluje tam pozadí levelů nebo taky inventář (PRSclasses.cpp, class Inventory) dole

_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna