Pixel darstellen füpr Simulation



  • hi

    hab ne simulation gemacht im stil von "game of life"
    dh ein 2D array von pixeln wird in pixeln in zwei farben dargestellt, in relativ schnellem cyclus. die qualität spielt dabei keine rolle, brauch aber nen fenster für interaktive änderung der parameter.

    nun frag ich mich wie ich den graphischen output am schlausten mache.
    mit winAPI oder mit vcl-forms, oder gibts noch was besseres?
    hab bcb2006 und immoment zeichne ich auf die mainform->canvas, hab aber s gefühl das geht noch schneller.

    bitte nicht gleich augen verdrehn, ich lern doch noch

    danke im voraus



  • Wenn's einfach sein soll, nimm SDL.
    Wenn das zu langsam ist, schau dir DirektDraw an.



  • Hallo

    Für DirectDraw gibt es im Pfad <BCB-Path>\Examples\DDraw einige Beispiele.

    bis bald
    akari



  • werd ich mir mal anschaun

    danke



  • hm irgendwie gibts das demo bei bde2006 nicht.
    kennt jemand ein anders gutes tut für directdraw für bcb?



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Also ich würds in Direct3D machen mit nem einfachen Partikel.



  • wenns nichts aufwendiges werden soll, dann kannst du mein GUI Framework benutzen:
    http://turing.fh-landshut.de/~jamann/IMB/IMB.html

    dort gibts ein Canvas steuerelement mit dem du Pixel setzen kannst... funzt etwa so:

    Canvas MyCanvas(x,y,width,height);
    MyCanvas.setPixelColor(x,y,color);
    

    Es gibt Buttons, Textboxen - sollte für einfache Einstellungen reichen - optionaml kannst du ja noch eine Klasse für ne ListBox programmieren

    am besten weichst du auf eine gängige C++ GUI Biblothek aus



  • nö nicht aufwendig, nur schnelle wiederholungsraten.
    will nur einfarbige pixel oder rechtecker haben, etwa so wie "krieg der kerne".

    sieht gut aus die screenshots
    ist die schneller als die vcl-canvas?
    werd ich gleich mal testen..



  • nur schnelle wiederholungsraten.

    dann dürfte DDraw besser sein - bzw. am besten wäre ein Pixelshader für D3D oder OpenGL - Game Of Life Pixelshader hab ich schon auf diversen Seiten gesehen - nur mal googeln



  • hmmm schade, das funzt bei mir nicht mit Deiner gui, vertexwahn.
    da krieg ich immer nen error

    [C++ Fatal Error] BitmapDIBUncompressed32Bit.h(17): F1003 Error directive: you must byte-align these structures with appropriate compiler directives

    welche direktiven muss ich bei bcb einstellen?

    / Brief description: simple class to handle 32 bit uncompressed bitmaps for 
    // windows
    //------------------------------------------------------------------------------
    
    #ifndef BitmapDIBUncompressed32Bit_h
    #define BitmapDIBUncompressed32Bit_h
    
    #include <windows.h>
    #include <stdio.h>
    
    #ifdef _MSC_VER        // byte algin structures
    	#pragma pack(push,packing)
    	#pragma pack(1)
    	#define PACK_STRUCT
    #else
    	#error you must byte-align these structures with appropriate compiler directives
    #endif
    
    //------------------------------------------------------------------------------------
    


  • Vertexwahn schrieb:

    nur schnelle wiederholungsraten.

    dann dürfte DDraw besser sein - bzw. am besten wäre ein Pixelshader für D3D oder OpenGL - Game Of Life Pixelshader hab ich schon auf diversen Seiten gesehen - nur mal googeln

    na dann werd ich um d3d oder gl wohl nicht drum rum kommen.
    früher oder später muss ichs wohl lernen..

    danke anyway

    viel erfolg noch mit der gui


  • Mod

    also bis zu einer auflösung von 80*50 würde textmode reichen 😉



  • weiß nur wie es für MSVC und GNU C geht...

    // byte-align structures 
    #ifdef _MSC_VER 
    #    pragma pack( push, packing ) 
    #    pragma pack( 1 ) 
    #    define PACK_STRUCT 
    #elif defined( __GNUC__ ) 
    #    define PACK_STRUCT    __attribute__((packed)) 
    #else 
    #    error you must byte-align these structures with the appropriate compiler directives 
    #endif
    

    wird beim Borland was ähnliches sein - diese Klasse wird nur benötigt, wenn du Bitmaps anzeigen willst - lösch das #ifdef zeugs einfach raus und lösche PACK_STRUCT überall wo es vorkommt - dann kannst du wahrscheinlich keine BMPs mehr laden, aber du kannst den Canvas verwendent - aber wie gesagt ist der nicht besonders schnell - da solltest du schon pixelshader nutzen

    Pixel Shader sind dafür zuständig, die in der Rasterizer Stage der Rendering Pipeline
    durchzuführenden Operationen schnell auszuführen. Sie können Pixel Operation wie
    beleuchten, schattieren und färben durchführen [pixelshader]. Es gibt bereits
    Programme, die zum Beispiel das Game of Life nur im Pixelshader berechnen und
    dann praktischerweise gleich ausgeben können. Dabei erreichen sie
    Geschwindigkeiten, die mit einer CPU heute nicht möglich wären. Es liegt hier ein
    enormes Potential für Algorithmen, die immer wieder mit denselben Daten jonglieren
    müssen, zum Beispiel wissenschaftliche Berechnungen und Simulationen.



  • so hab schon einen Quellcode gefunden - wenn du eine gute grafikkarte hast dürfte dies die schnellste möglichkeit sein Game of Life zu implementieren

    http://vvvv.meso.net/tiki-index.php?page=pixelshader_for_newbies_08



  • jo vielen dank für die mühe
    ich glaub der pixelshader ist schon was ich suchte.
    mir ist nur noch nicht klar, ob das in windows geht oder nur im vollbild, sieht aber eigentlcih schon so aus.

    hab die page auch gefunden im googel
    werd mich mal einlesen

    dank nochmal

    die canvas kann was erlebne die 😃



  • ob das in windows geht oder nur im vollbild

    beides geht


Anmelden zum Antworten