Window mit 900000 FPS?
-
Elisa schrieb:
eLISA schrieb:
Ich weiß aber jetzt immer noch nicht wieviele FPS mein Windows macht. Kann ir das jetzt mal einer sagen wie ich da den Code machen muss?
Danke im voraus.
Eine schlechte Kopie bist du, jawohl!
Mein Code vom ersten Posting funktioniert einwandfrei.Man bin ich dumm

-
Elisa schrieb:
Elisa schrieb:
eLISA schrieb:
Ich weiß aber jetzt immer noch nicht wieviele FPS mein Windows macht. Kann ir das jetzt mal einer sagen wie ich da den Code machen muss?
Danke im voraus.
Eine schlechte Kopie bist du, jawohl!
Mein Code vom ersten Posting funktioniert einwandfrei.Man bin ich dumm

Oh ja! Und wie!

Sei doch mal nett!!!
-
Elisa schrieb:
..und weil ich so nett bin, hier der Code wie frau in Windows Text ausgeben kann, ganz ohne Textbox, und Unicode konform:
//...in den Definitions #include <windows.h> #include <tchar.h> #include <sstream> #include <iomanip> typedef std::basic_stringstream<TCHAR> tsringstream; //...in der MsgProc tsringstream text; PAINTSTRUCT ps; HDC hDC; switch( msg ) { //... case WM_PAINT: text << std::setprecision(2) << std::fixed << fps << " FPS" ; if( hDC = BeginPaint( hWnd, &ps ) ) { TextOut( hDC, 0, 0, text.str().c_str(), text.str().length() ); EndPaint( hWnd, &ps ); } return 0;ps: kritik erwünscht

is zwar korrekt aber ...naja wär auch einfacher möglich...:
#include <windows.h> //...in der MsgProc PAINTSTRUCT ps; TCHAR szBuf[50] switch msg) { //... case WM_PAINT: wsprintf(szBuf, TEXT("%d FPS"), fps); if(BeginPaint(hWnd, &ps)) { TextOut(ps.hdc, 0, 0, szBuf, strlen(szBuf)); EndPaint(hWnd, &ps ); } return (0); // ... }Aber dein Code is natürlich völlig rischtisch

__________________________________________________________________________
eLISA schrieb:
Von dem her ne verdammt gute Maschine.

du anscheinend auch

MfG CodeFinder
-
CodeFinder
C
-
He Duuu,
las doch jetzt die flirterei, ich werd noch ganz verlegen :rotwerd:[quote="CodeFinder]eLISA schrieb:
Von dem her ne verdammt gute Maschine.

du anscheinend auch

MfG CodeFinder[/quote]
Willst du damit sagen, das ich anscheinend auch ein Mensch bin? :pDas mit wsprintf hab ich ewig probiert, kam aber zum Schluss, dass es mit floats nicht wirklich funktioniert. Jedenfalls war die Ausgabe immer recht kryptisch.
Aber werds gleich noch einmal testen..
Bis später..
-
wsprintf kann nicht mit float umgehen.
-
Nee, floats in wsprintf is irgendwie nicht so doll

Diesmal gibts rund **-**2147 Millionen aus.
Ich mach mir zwar nichts aus hohen Framerates(
), aber negativ ist dann doch etwas arg wenig.Naja nicht so schlimm, mit stringstreams arbeit ich sowieso lieber, is intuitiver, einfach mit << zu verketten. Für directX muss ich eh noch was überlegen, wie ichs da ausgebe.
Werd wohl ein D3DXFONT nehmen, obwohl das ja etwas lahm sein soll, aber is ja nur zu Testzwecken. Bitmap Fonts mag ich nich, die haben kein schönes Spacing.
-
eLISA schrieb:
He Duuu,
las doch jetzt die flirterei, ich werd noch ganz verlegen :rotwerd:[quote="CodeFinder]eLISA schrieb:
Von dem her ne verdammt gute Maschine.

==>>
lol, fühl dich doch einfach geschmeichelt...
...das is nicht schwer 
_____________________________________________________________________________________eLISA schrieb:
CodeFinder schrieb:
du anscheinend auch

MfG CodeFinder
Willst du damit sagen, das ich anscheinend auch ein Mensch bin?
==>>
ne ich will damit sagen das du auch ne verdammt gute 'Maschine' bist

_____________________________________________________________________________________eLISA schrieb:
Das mit wsprintf hab ich ewig probiert, kam aber zum Schluss, dass es mit floats nicht wirklich funktioniert. Jedenfalls war die Ausgabe immer recht kryptisch.
Aber werds gleich noch einmal testen..
Bis später..
==>>
jo wsprintf kann auch nicht mit float umgehen hab mir ehrlich gesagt den Typ von fps nicht angeguckt...-sry-
Dazu müsst ihr sprintf nehmen...sry nochmal wg. der Arbeit...die Zeile:wsprintf(szBuf, TEXT("%d FPS"), fps);in diese umändern:
sprintf(szBuf, TEXT("%f FPS"), fps);dann sollte es worken (falls nicht noch ein "#include <stdio.h>" zu deinen anderen Includes)...
_____________________________________________________________________________________MfG CodeFinder
-
eLISA schrieb:
Für directX muss ich eh noch was überlegen, wie ichs da ausgebe.
wie geil!, kannst du DirectX ??? ---
mein Respekt! ...Obacht 
MfG CodeFinder
-
float fTest = 2.21234234f; char cBuffer[256]; _snprintf(cBuffer, 256, "Die Variable Test: %4.2f", fTest);
-
...pst weitersagen...eLISA und CodeFinder sind ein Liebespaar...
-
(D)Evil schrieb:
float fTest = 2.21234234f; char cBuffer[256]; _snprintf(cBuffer, 256, "Die Variable Test: %4.2f", fTest);Heisst 4.2 -> 4 Stellen vor, 2 nach dem Komma? (Bin grad froh, eine Stelle zu haben)
Wasn _snprintf()? tönt schwer nach nicht standardkonformen c..
ne da bleib ich doch bei meinem tstringstream!
CodeFinder schrieb:
..wie geil!, kannst du DirectX ??? --- --> mein Respekt! ...Obacht
Sagen wir mal, ich lerne es

Is ja nich so schwer, die msdn zu bedienen, M$ rechnet zum Glück mit dem DAU
CodeFinder schrieb:
==>>
lol, fühl dich doch einfach geschmeichelt...das is nicht schwerOK... *geschmeicheltfühl*
CodeFinder schrieb:
==>>
ne ich will damit sagen das du auch ne verdammt gute 'Maschine' bist
reingefallen..pass immer auf: was du sagst, und was du meinst, ist nicht das gleiche...
Aber dann mal Danke für die netten Komplimente.CodeFinder schrieb:
==>>
jo wsprintf kann auch nicht mit float umgehen hab mir ehrlich gesagt den Typ von fps nicht angeguckt...-sry-Ehrlich gesagt, hab ich auch den Typ nicht angegeben, ich mag nicht, wenn jeder meine Typen kennt

CodeFinder schrieb:
Dazu müsst ihr sprintf nehmen...sry nochmal wg. der Arbeit...die Zeile:
wsprintf(szBuf, TEXT("%d FPS"), fps);in diese umändern:
sprintf(szBuf, TEXT("%f FPS"), fps);dann sollte es worken (falls nicht noch ein "#include <stdio.h>" zu deinen anderen Includes)...
Wie gesagt, ich mag sstreams, is halt "handier" und cpluspluser
CodeFinder schrieb:
MfG CodeFinder
Auch Dir, schöne Grüsse und vielen Dank fürs "kümmern"
ps: maximal sind 10 smilies erwünscht

-
Jo _snprintf printf usw sind alles C Funktionen. streams sind bei dtandardkomformen C++ richtig.
Wobei WinAPI auch C ist

-
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 ?
-
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..