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 

 
			
					
				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  

  *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^^