Seite 1 von 1

"FracX" Der HiRes 2D Renderer^^

Verfasst: Do Mär 11, 2010 4:34 pm
von G_loW
Hi Leute,

Mir ist mal wieder ein Projekt eingefallen, ich nenne es "Fracx"

1.Mein Ziel
Ein Proggramm das:
--Verschiedenen Fraktikale in hohen auflösungen zeichenen kann.
--Diese dann als Bilddatei ausgeben kann.

Das Proplem das ich grad habe ist, ich habe nich nie mit einer "Grafik-

Engine" gearbeitet habe.
Ich kenne zwar Das Gimp Tool-Kit von freunden habe es aber nochnie selber
probiert.

Dann habe ich nochwas von GTKMM gehört, das soll wohl die C++ variante
sein, die auch für "Inkscape" verwendet wurde. (ich finde Inkscape
grandios^^)

Also, was würdet ihr mit empfehlen

Da Fraktikanle auch mathematisch recht anspruchsvoll sind, fange ich
lieber mit was einfachem an.

2 einfache quadrate nebeneinander

Der inhalt der bilder ist mir zuerstmal relativ egal, ich will momentan
bilder mit möglichste hoher auflösung rendern.
Ich glaube ich fange bei 4096 × 3072 an.

ok, das wars eigentlich.

MFG G_loW <xD

Re: "FracX" Der HiRes 2D Renderer^^

Verfasst: Do Mär 11, 2010 7:17 pm
von G_loW
GTK.... Da hab ich ja wohl voll ins bein geschossen xD

Bleiben noch:
--Open GL
--SDL
--DirectX

Ich hab vonn allen kein plan...

Wer kann mir rat geben :mrgreen:

Re: "FracX" Der HiRes 2D Renderer^^

Verfasst: Do Mär 11, 2010 7:46 pm
von +Fuss+
Ich würde mit mal Cairo als Grafiklibrary ansehen.
G_loW hat geschrieben:Ich kenne zwar Das Gimp Tool-Kit von freunden habe es aber nochnie selber
probiert.

Dann habe ich nochwas von GTKMM gehört, das soll wohl die C++ variante
sein, die auch für "Inkscape" verwendet wurde. (ich finde Inkscape
grandios^^)
GTK+ selber ist ja nur für die Erstellung einer GUI zuständig, aber die Zeichenroutinen die seit neuestem (Version 2.8) verwendet werden, zeichnen alle mit Cairo. gtkmm zeichnet ebenfalls mit Cairo. An der Darstellung von Objekten in Inkscape ist Cairo auch mit von der Partie.

Das ganze basiert auf 2D Vektorgrafik (sollte somit von der Auflösung her kein Problem sein) und ist unabhängig von der verwendeten Plattform.

Für den Einstieg kann ich das hier empfehlen: http://www.zetcode.com/tutorials/cairographicstutorial/

MfG Fuss

Re: "FracX" Der HiRes 2D Renderer^^

Verfasst: Do Mär 11, 2010 8:51 pm
von G_loW
gutgut ich habs tut en bissel angeschaut aber schon nach kurzer zeit muste ich feststellen das Code::Blocks was degegen hat^^

Code: Alles auswählen

#include <cairo.h>
#include <gtk/gtk.h>


double coordx[100];
double coordy[100];

int count = 0;

static gboolean
on_expose_event(GtkWidget *widget,
    GdkEventExpose *event,
    gpointer data)
{
  cairo_t *cr;

  cr = gdk_cairo_create(widget->window);

  cairo_set_source_rgb(cr, 0, 0, 0);
  cairo_set_line_width (cr, 0.5);

  int i, j;
  for ( i = 0; i <= count - 1; i++ ) {
      for ( j  = 0; j <= count -1; j++ ) {
          cairo_move_to(cr, coordx[i], coordy[i]);
          cairo_line_to(cr, coordx[j], coordy[j]);
      }
  }

  count = 0;
  cairo_stroke(cr);
  cairo_destroy(cr);

  return FALSE;
}

gboolean clicked(GtkWidget *widget, GdkEventButton *event,
    gpointer user_data)
{
    if (event->button == 1) {
        coordx[count] = event->x;
        coordy[count++] = event->y;
    }

    if (event->button == 3) {
        gtk_widget_queue_draw(widget);
    }

    return TRUE;
}


int
main (int argc, char *argv[])
{

  GtkWidget *window;

  gtk_init(&argc, &argv);
  
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
  gtk_widget_add_events (window, GDK_BUTTON_PRESS_MASK);

  g_signal_connect(window, "expose-event",
      G_CALLBACK(on_expose_event), NULL);
  g_signal_connect(window, "destroy",
      G_CALLBACK(gtk_main_quit), NULL);
  g_signal_connect(window, "button-press-event", 
      G_CALLBACK(clicked), NULL);
 
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_title(GTK_WINDOW(window), "lines");
  gtk_window_set_default_size(GTK_WINDOW(window), 400, 300); 
  gtk_widget_set_app_paintable(window, TRUE);

  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}

Das ist ein code aus dem tut zum "Basic Drawing"

was sagt CB dazu....

Code: Alles auswählen

-------------- Build: Debug in FracX ---------------

Linking console executable: bin\Debug\FracX.exe
obj\Debug\main.o: In function `on_expose_event':
D:/Extras/Medial/Proggen/Projekte/FracX/FracX/main.c:15: undefined reference to `_gdk_cairo_create'
D:/Extras/Medial/Proggen/Projekte/FracX/FracX/main.c:17: undefined reference to `_cairo_set_source_rgb'
D:/Extras/Medial/Proggen/Projekte/FracX/FracX/main.c:18: undefined reference to `_cairo_set_line_width'
D:/Extras/Medial/Proggen/Projekte/FracX/FracX/main.c:23: undefined reference to `_cairo_move_to'
D:/Extras/Medial/Proggen/Projekte/FracX/FracX/main.c:24: undefined reference to `_cairo_line_to'
D:/Extras/Medial/Proggen/Projekte/FracX/FracX/main.c:29: undefined reference to `_cairo_stroke'
D:/Extras/Medial/Proggen/Projekte/FracX/FracX/main.c:30: undefined reference to `_cairo_destroy'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
7 errors, 0 warnings

Re: "FracX" Der HiRes 2D Renderer^^

Verfasst: Do Mär 11, 2010 9:00 pm
von Bebu
Das sieht nach einem Linkerfehler aus. Kann es sein, das du vergessen hast Cairolibrary zum Programm zu linken?

Re: "FracX" Der HiRes 2D Renderer^^

Verfasst: Do Mär 11, 2010 9:01 pm
von cloidnerux
Das ist ein code aus dem tut zum "Basic Drawing"

was sagt CB dazu....
Hast du auch die Libs von Ciaro mit in den Linkprozess aufgenommen, denn es sieht so aus, als würden ihm diese Fehlen.

Re: "FracX" Der HiRes 2D Renderer^^

Verfasst: Do Mär 11, 2010 9:03 pm
von G_loW
Argh.... *Kopf auf tisch hau*

Falsche version sry :oops: *2.8.9 lad*

so, ein fehler bleib dennoch:

Code: Alles auswählen

-------------- Build: Debug in FracX ---------------

Linking console executable: bin\Debug\FracX.exe
C:\Program Files\CodeBlocks\MinGW\bin\ld.exe: cannot find -lgtk-win32-2.0
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings
aber das mach ich morgen^^