Window mit 900000 FPS?
-
hmm dein Code ist übrigens doch nicht UNICODE konform denn:
text << std::setprecision(2) << std::fixed << fps << " FPS" ;muss:
text << std::setprecision(2) << std::fixed << fps << TEXT(" FPS") ;heißen;
glaub ich zum mindestens ...sry Schätzchen

MfG CodeFinder
-
CodeFinder schrieb:
Ehrlich gesagt, hab ich auch den Typ nicht angegeben, ich mag nicht, wenn jeder meine Typen kennt

tze tze tze, und n guten Sinn für Humor hat sie auch noch
...das mit den smilies is mir auch aufgefallen... 
MfG CodeFinder
PS: Ließt du n Buch bzgl DirectX ?
He Du
's wird hier langsam ziemlich OT..mir is es ja egal..nö, wieso bücher kaufen, die eh nur auf ihrem eignen Mist aufbauen?
Hab mir halt die MSDN Tutorials reingezogen (die sind sehr gut, in Verbindung mit der Referenz), und ein weiteres (keine Ahnung mehr woher) wo einer die DXdevice in ne Klasse gekapselt hat. Die Klasse hab ich nun übernommen und angepasst. Ne Klasse für D3DXFONTS is am entstehn. DInput hab ich auch aus der MSDN. Für ne theoretische Abhandlung über 3D Darstellung ist Vertexwahn's Essay recht gut und kompakt.CodeFinder schrieb:
hmm dein Code ist übrigens doch nicht UNICODE konform denn:
text << std::setprecision(2) << std::fixed << fps << " FPS" ;muss:
text << std::setprecision(2) << std::fixed << fps << TEXT(" FPS") ;heißen;
glaub ich zum mindestens ...sry Schätzchen (zuviele Smilies)
MfG CodeFinderSorry Schätzchen, mein Compiler (VS2005EE) schluckt das ohne mucken. Frag mich nich wieso...

Was du immer für CodeFindest

ach und @(D)evil: ich weiss, WinAPI ist elend.

Kein Grund selbst auch elenden Code zu schreiben.
DX9 is aber objectorientiert..Also zusammenfassend kann man sagen, ich hab erst ein Hauptfenster aufgebaut mit WinAPI, dann nen Timer auf Basis des PerformanceCounters für die Framerate ( da kam für mich der Shock mit 900000FPS wo ich hier mal nachfragen musste ), und danach die DirectX Interfaces implementiert. Inzwischen hab ich ein Fensterchen mit einem Background Surface( noch ist alles 2D )( damals, im Ferienlager, hab ich mit SDL angefangen ) und netten 85-90 FPS.
Ihr seht, die Ausgabe des floats ist für mich sekundär, aber natürlich nett. Es korrekt zu machen is sowas wie Ehrgeiz. Ich könnts ja auch in ein File schreiben, aber all die "coolen" Games habens doch oben links oder rechts in der HUD stehn.
Soweit bin ich noch nicht, aber es kommt die Zeit...
Ok ich könnt noch lange plappern, drück aber jetzt mal auf "Senden"..Grüsse an euch alle da draussen

-
ehh, ....
eLISA schrieb:
He Du
's wird hier langsam ziemlich OT..mir is es ja egal..was isn "OT"

und was war "DAU"
MfG CodeFinder
-
sry vergessen zu Fragen

nochmal @ eLISA (ich hoffe ich nerv dich nicht
)eLISA schrieb:
wo einer die DXdevice in ne Klasse gekapselt hat
kannste mir die mal schicken ?, bitte? ...wär echt lieb ...würd ich mir gerne mal angucken

e-Mail: cpp-coding@arcor.de
schonmal thX A LoT
MfG CodeFinder
-
Hehe

Wenn du meine eMail willst, musst du schon etwas phantasievoller sein :-p
Wenns dir um den Code geht, voila:
( weis jetzt nicht ob ich das veröffentlcihen darf, weil ein grosser Teil ausm Tutorial stammt,
aber "image" und "scene" sind von mir, die darfste haben )
graphic2D.h#ifndef GRAPHIC2D_H #define GRAPHIC2D_H #ifdef _MSC_VER #pragma once #include "globals.h" class scene; class graphic2D { public: graphic2D(); ~graphic2D(); void init( HWND hWnd_ ); void render( scene& scenerie ); void clear(); LPDIRECT3D9 get_interface() { return DXinterface; } LPDIRECT3DDEVICE9 get_device() { return DXdevice; } HWND get_hwnd() { return hwnd; } private: LPDIRECT3D9 DXinterface; LPDIRECT3DDEVICE9 DXdevice; HWND hwnd; }; #endifgraphic2D.cpp
#include "graphic2D.h" #include "scene.h" typedef std::vector<image*> img_cont; typedef img_cont::iterator img_iter; graphic2D::graphic2D() : DXinterface( 0 ), DXdevice( 0 ) { clear(); } graphic2D::~graphic2D() { clear(); } void graphic2D::init( HWND hWnd_ ) { hwnd = hWnd_; if( 0 == ( DXinterface = Direct3DCreate9( D3D_SDK_VERSION ) ) ) { ex_interface ex; throw ex; return; } D3DDISPLAYMODE displaymode; ZeroMemory( &displaymode, sizeof(displaymode) ); DXinterface->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &displaymode ); D3DPRESENT_PARAMETERS present_parameters; ZeroMemory( &present_parameters, sizeof(present_parameters) ); // TODO: set present parameters here // Note: default for 2D blitting in window present_parameters.Windowed = TRUE; present_parameters.BackBufferFormat = displaymode.Format; present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD; present_parameters.EnableAutoDepthStencil = TRUE; present_parameters.AutoDepthStencilFormat = D3DFMT_D16; if(FAILED( DXinterface->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &DXdevice ) ) ) { ex_device ex; throw ex; return; } // TODO: set render settings here // Note: defaults for 2D blitting with colorkeying DXdevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ); DXdevice->SetRenderState( D3DRS_LIGHTING, FALSE ); DXdevice->SetRenderState( D3DRS_ZENABLE, TRUE ); DXdevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE ); DXdevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); DXdevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); DXdevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE ); DXdevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE ); DXdevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_TEXTURE ); DXdevice->SetFVF( D3DFVF_CUSTOMVERTEX ); DXdevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE ); DXdevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); DXdevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); } void graphic2D::render( scene& scenerie ) { DXdevice->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB( 255, 255, 255 ), 1.0f, 0L ); if( SUCCEEDED( DXdevice->BeginScene() ) ) { // TODO: describe scene here // Note: default 2D blit image for( img_iter it = scenerie.shapes.begin(); it != scenerie.shapes.end(); it++ ) { DXdevice->SetTexture( 0, (*it)->surface.DXtexture ); DXdevice->SetStreamSource( 0, (*it)->body.DXvertexbuffer, 0, sizeof( CUSTOMVERTEX ) ); DXdevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 ); } DXdevice->EndScene(); } DXdevice->Present( 0, 0, 0, 0 ); } void graphic2D::clear() { if( DXdevice ) { DXdevice->Release(); DXdevice = 0; } if( DXinterface ) { DXinterface->Release(); DXinterface = 0; } }image.h
#ifndef IMAGE_H #define IMAGE_H #ifdef _MSC_VER #pragma once #endif #include "globals.h" #include "mainwin.h" #include "rectangle.h" #include "texture.h" class image { public: image( mainwin& window_, LPCTSTR filename_ ); ~image(); void init(); void move_size( int x, int y, int w, int h, float z ); void clear(); rectangle body; texture surface; mainwin& window; }; #endifimage.cpp
#include "image.h" image::image( mainwin& window_, LPCTSTR filename_ ) : body( window_ ), surface( window_, filename_ ), window( window_ ) { clear(); } image::~image() { clear(); } void image::init() { body.init(); surface.init(); } void image::move_size( int x, int y, int w, int h, float z ) { body.set_pos( x, y, w, h, z ); } void image::clear() { body.clear(); surface.clear(); }polygon.h
#ifndef POLYGON_H #define POLYGON_H #ifdef _MSC_VER #pragma once #endif #include "globals.h" #include "mainwin.h" class polygon { public: polygon( mainwin& window_ ); ~polygon(); virtual void init() = 0 {} virtual void set_pos( int x, int y, int w, int h, float z ) = 0 {} void clear(); LPDIRECT3DVERTEXBUFFER9 get_vertexbuffer(); mainwin& window; LPDIRECT3DVERTEXBUFFER9 DXvertexbuffer; }; #endifpolygon.cpp
#include "polygon.h" polygon::polygon(mainwin &window_) : window( window_ ), DXvertexbuffer( 0 ) { clear(); } polygon::~polygon() { clear(); } void polygon::clear() { if( DXvertexbuffer ) { DXvertexbuffer->Release(); DXvertexbuffer = 0; } } LPDIRECT3DVERTEXBUFFER9 polygon::get_vertexbuffer() { if( !DXvertexbuffer ) { ex_ ex; throw ex; return 0; } return DXvertexbuffer; }texture.h
#ifndef TEXTURE_H #define TEXTURE_H #ifdef _MSC_VER #pragma once #endif #include "globals.h" #include "mainwin.h" class texture { public: texture( mainwin& window_, LPCTSTR filename_ ); ~texture(); void init(); void clear(); mainwin& window; LPDIRECT3DTEXTURE9 DXtexture; LPCTSTR filename; //int alpha; //int width; //int height; //int pitch; }; #endiftexture.cpp
#include "texture.h" texture::texture( mainwin& window_, LPCTSTR filename_ ) : window( window_ ), filename( filename_ ), DXtexture( 0 ) //alpha( 0 ), width( 0 ), height( 0 ), pitch( 0 ) { clear(); } texture::~texture(void) { clear(); } void texture::init() { if( !window.get_display().get_device() ) { ex_getdevice ex; throw ex; return; } if( FAILED( D3DXCreateTextureFromFileEx( window.get_display().get_device(), filename, 0, 0, D3DX_FROM_FILE, 0, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0xFFFFFFFF, 0, 0, &DXtexture ) ) ) { ex_texture_file ex; throw ex; return; } } void texture::clear() { if( DXtexture ) { DXtexture->Release(); DXtexture = 0; } }scene.h
#ifndef SCENE_H #define SCENE_H #ifdef _MSC_VER #pragma once #endif #include "globals.h" #include "image.h" class mainwin; typedef std::vector<image*> img_cont; typedef img_cont::iterator img_iter; class scene { public: scene( mainwin& window_ ); ~scene(); void add_image(LPCTSTR filename_, int x, int y, int w, int h, float z ); void clear(); img_cont shapes; mainwin& window; }; #endifscene.cpp
#include "scene.h" #include "mainwin.h" scene::scene( mainwin& window_ ) : window( window_ ) { clear(); } scene::~scene() { clear(); } void scene::add_image(LPCTSTR filename_, int x, int y, int w, int h, float z) { image* elem = new image( window, filename_ ); elem->init(); elem->move_size( x, y, w, h, z); shapes.push_back( elem ); } void scene::clear() { for( img_iter it = shapes.begin(); it != shapes.end(); it++ ) { delete *it; } shapes.empty(); }Wie immer für jegliche Kritik offen...

-
[quote="CodeFinder"]ehh, ....
eLISA schrieb:
was isn "OT"

und was war "DAU"
MfG CodeFinder
Du bis wohl neu im Netz?
:p
schau mal hierOT heisst OffTopic
DAU heisst Dümmster Anzunehmender User, also wie ein GAU bei nem KKW, der dein Programm zum m0nd schiesst..
-
hehe^^,
Wenn du meine eMail willst, musst du schon etwas phantasievoller sein :-p
lol, daran hat ich echt nicht gedacht es ging mir um den Code
...aber...
1. was heißtn jez OT ?
2. was heißtn jez DAU ?
3. ist das alles (bzgl. der Klasse) ?und danke NOCHMAL!
MfG CodeFinder
-
CodeFinder schrieb:
hehe^^,
Wenn du meine eMail willst, musst du schon etwas phantasievoller sein :-p
lol, daran hat ich echt nicht gedacht es ging mir um den Code
...aber...
1. was heißtn jez OT ?
2. was heißtn jez DAU ?
3. ist das alles (bzgl. der Klasse) ?und danke NOCHMAL!
MfG CodeFinder
1. siehe oben
2. siehe oben
3. mehr brauchst Du nicht, nen LPDIRECT3D9, nen LPDIRECT3DDEVICE9..
was willste noch?
-
Hab grad die Quelle wiedergefunden:
http://www.flipcode.com/articles/article_adv2ddx8.shtml
Trotz Einstellung des Betriebs eine sehr gute Seite, mit wirklich interessanten Artikeln.
-
hmm ok ok ok
also ersmal danke für den Link...dann noch mal was zum Thema was deiner Meinung nach OT
war:auch wenn ich darauf nun nicht angespielt hab...warum war das denn keine gute Idee, an deine eMail zu kommen ? ...da gibts doch wohl flacheres oder nicht ...
...MfG CodeFinder
PS: Das mit den Abkürzungen ist ja wohl n Witz

-
CodeFinder schrieb:
hmm ok ok ok
also ersmal danke für den Link...bitte
schmöcker mal ein bisschen in den Artikeln, wenn du an Spielprogrammieren interessiert bist. Ansonsten wäre noch Gamedev zu nennen ( einfach mal googeln ).CodeFinder schrieb:
dann noch mal was zum Thema was deiner Meinung nach OT
war:auch wenn ich darauf nun nicht angespielt hab...warum war das denn keine gute Idee, an deine eMail zu kommen ? ...da gibts doch wohl flacheres oder nicht ...

he easy, kein prob, ( check mal deine Mailbox ).
Nur die Aussage: "Wau, ein Mädchen das Coded" fand ich flach (...), der Rest war ok!
...CodeFinder schrieb:
PS: Das mit den Abkürzungen ist ja wohl n Witz

Kommt immer drauf an, wie schnell man tippen muss/kann. Kommt IMHO (In My Humble Opinion) aus der Zeit, als man noch im Chat abhing und online sein noch nach Zeit berechnet wurde ( völlig unverständlich
) Bin auch kein Freund kurzer Statements, aber irgendwie hat sich das alles eingebürgert.
Ach, und Bielefake gibt es nicht!!
