Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » schwarzer Bildschirm, beschaedigte Darstellungen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
06.09.2003, 22:38 Uhr
~vangelis
Gast


Hallo leute
Ich habe grad angefangen mit die 3d grafikprogrammierung und komme
nicht weiter...
Ich lese gerade das buch von Marius Apetri 3D grafikprogrammierung.
Es verwendet den Cygwin compiler, mein betriebsystem ist winXP,
mein grafikkarte geforce2 MX/MX 400 und habe ein TFT monitor.
Alle programe die ich dadrin getestet habe zeigen entweder
ein schwarzer bildschirm oder abgehakte grafiken.
Die compilierung mit den dxsdk läuft einwandfrei.
Mein erstes program zb. soll alle farben einer 8 bit farbpallete
darstellen.
Es soll ein fenster aufmachen mit 320x200 8bit aufmachen, und dan
256 spalten mit jeweils eine farbe zeigen,
und zwar getestet auf winXP und win2000.
resultat---> schwarzer bildshirm, der
manchmal zurueck zu den betriesystem wieder umschaltet....
Frage 1:
Liegt das Problem in der Darstellung von 320x200 8bit in verbindung mit
XP und win2000??
Dieses problem habe ich mit alle programe dieses buches die diese farbpalete
und eventuel aufloessung verwenden.
Bei andere programen die zb. bitmaps oder landschaften darstellen sollen
kriege ich abgehakte bilder zu sehen......
Alerdings arbeiten diese programme mit 640x480 32bit oder 16bit aufloessung.
Wie kann ich dieses problem beheben so das alle programme einwandfrei laufen??
--ich komme absollut kein schritt weiter--
Auf ein antwort wurde ich euch sehr dankbar...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.09.2003, 23:20 Uhr
Pablo
Supertux
(Operator)


Hi, heißt du Vangelis oder hörst du nur Vangelis....

naja zum Thema:

Benutzt das Buch der gcc Kompilier von Cygwin? Dann würde ich sagen, dass es ein X-Server fehlt, wenn man das ausführen will.

Soll das Programm im Vollmodus laufen? Oder erstellst du ein Fenster und das Fensetr ist immer schwarz?

Soweit ich weiß, gibt es keine Farbpalette mehr ab 16 ode 24 Bits, das kann ich mich nicht erinnern. Ich hab das nur einmal ganz schnell gemacht, aber das vor langer Zeit. Postet mal deinen Code, oder das Stück Code, der das Fenseter erzeugt.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.09.2003, 09:52 Uhr
~vangelis
Gast


Hi pablo
Vielen dank fuer deinen antwort
Mein name ist tatchächlich vangelis und ich hoere auch vangelis
Ja das muss der gcc von Cygwin sein
und so wird die compielierung gestartet in Shell des Compilers:

g++ a6_9.cpp -o a6_9.exe -Ic:/dxsdk/include -Lc:/dxsdk/lib
-fvtable-thunks -mwindows -e _mainCRTStartup -ffreestanding
-lddraw

Du hast mich uberascht ein xserver ist ein unix/linux umgebung??
Wie kann ich das machen die programmdatei ist ein exe datei,
sie benutzt die cygwin1.dll wie auch der compiler...
und die habe ich ganz normal auf den winXP compiliert.
Wie kann ich Sie unter
ein X Server Starten wen ich einen instaliert habe??
Das program läuft in vollbildschirmmodus kein fenster...,
aber wie gesagt alles schwarz.

Hier ist der Quellcode von winmain:




C++:

#include <windows.h>

#include "s2_1.h"

uchar handle_input( MSG *msg );

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow )
{
  surface.open_window( hInstance, 320, 200, 8 ); //surface -> directX class
  
  uchar *screen = (uchar *) surface.get_screen_pointer();

  for( long x=0 ; x<256 ; x++ )
     for( long y=0 ; y<200 ; y++ )
        screen[ y * 320 + x ] = x;
    
  surface.release_screen_pointer();
    
  MSG message;
  while( !handle_input( &message ) ) ;

  return message.wParam;
}

uchar handle_input( MSG *msg )
{
  if( PeekMessage( msg, NULL, 0, 0, PM_REMOVE ) )
  {
    if( msg->message == WM_QUIT || msg->message == WM_KEYDOWN ) return 1;
  
    TranslateMessage( msg );
    DispatchMessage( msg );    
  }
  
  return 0;
}



in der Hilfestellung von Buch steht wegen die EXE dateien:

Bei Verwendung des Betriebssystems WINDOWS XP kann es bei der Ausführung
der Programme,welche unter einer Farbtiefe von 8 Bit arbeiten,zu fehlerhaften
Ausgaben kommen.Diese Fehler treten allerdings nicht im Zusammenhang mit
den 16 -und 32 Bit Programmen auf.Die fehlerhaften Ausgaben lassen sich in der
Regel durch die Einstellung eines geeigneten Kompatibilitätsmodus [ Eigenschaften
->Kompatibilität ] beseitigen.


--->Ich habe alle Kompatibilitätsmodis ausprobiert und
immer noch ein schwarzer bildschirm,
abgesehen davon in win2000 habe ich genauso die probleme!!!!

ansonsten kann ich auch die header posten wen die gebraucht wird...

An jede weitere antwort wurde ich sehr dankbar
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.09.2003, 12:35 Uhr
Pablo
Supertux
(Operator)


Ich wusste nicht, dass man mit g++ auch windows Progg. kompilieren kann, das war mir echt neu. Ich hab gemeint X-Server, weil Cygwin einen Nested X-Server hat und man kann da schon X-Programme starten. Man muss nur X11 Funktionen benutzen, und der nested X-server starten und vor dort aus starten.

Ich beschäftige mich nicht damit, deshalb weiß ich nicht, worin der Fehler liegt. Das sieht aber nicht mehr nach ANSI sondern nach Windows, ich würde dein Thread verschieben, aber ich weiß nicht ob VC++ (das ist es nicht) oder Windows API. Tut mir leid, vielleicht die Leute von Windows API Forum oder VC++ Forum kennen das Problem.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.09.2003, 09:40 Uhr
virtual
Sexiest Bit alive
(Operator)



--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.09.2003, 03:12 Uhr
~vangelis
Gast


Ich danke dir pablo
Ich habe jetzt ein brief an den verlag geschikt..
mal schauen bin gespannt......
vieleicht ist der code fuer XP veraltet, keine ahnung........
An jede weitere antwort freu ich mich
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.09.2003, 14:23 Uhr
kronos
Quotenfisch
(Operator)


ich hab' davon zwar keine ahnung, aber vielleicht schreibt screen() die pixel nicht direkt in den grafik-speicher, sondern auf die festplatte oder so. in dem fall müsstest du ihm noch sagen, dass er den bildschirm aktualisieren soll.
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.09.2003, 11:50 Uhr
~vangelis
Gast


Hi kronus
Du könntest recht haben...
Allgemein shaut es ein nicht geeignete winXP programmierung
zu sein...
Ich habe jetzt einen rechner mit win98 eingerichtet.
Und es läuft tatschächlich....
Allerdings mit einschränkungen wie:
Die aufloesung von programm muss groesser als die eingestellte
aufloessung sein.
Bei mir funktioniert es mit den programm auf 1024x768 und die
grafikkarte einstellung auf 800x600.
Dabei darf die farbtiefe von soll und ist wert auch nicht gleich sein,
Ich habe schon betriebsystemabstuertze dadurch gehabt.
Es ist also anscheinend so das programm nur auf umschalten
reagiert und richtig funktioniert.
(Die rede ist naturlich von win98 nicht von XP da dort garnichts funktioniert auch nicht in ein anderen kompatibilitätsmodus!!!!!)
Damit komme ich naturlich zu zeit weiter mit meine grafikberechnungen
aber nur noch beschrenkt auf diese bestimmte einstellung, und
ich weis noch garnicht wie weit noch.........
Ich wurde dankbar auf jede weitere anregung
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
10.09.2003, 14:33 Uhr
kronos
Quotenfisch
(Operator)


ich hab' mal ein paar sachen in 'nem grafik-api geschrieben, da musst zum setzen eines pixels folgendes gemacht werden:

*lock screen-surface *
*pixeldaten in den grafikspeicher schreib'*
*unlock screen-surface*
*refresh screen*

vielleicht hast du irgendwas wichtiges vergessen?
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
10.09.2003, 15:42 Uhr
~vangelis
Gast


Hi kronos

eigendlich wird in der function get_screen_pointer()
die lock funcktion augerufen soweit ich weiss.
sowie release_screen_pointer() die unlock...
Die daten in den speicher sind eigendlich drin durch
.....................................
screen[ y * 320 + x ] = x...
.....................................
Was jetzt mit der refresh ist das könnte es sein,
ich denk mal das es in release_screen_pointer() passiert...
ich weis sonst nicht was zu machen ist....
was man anders ausprobieren kann...
wenn du ein funktionsfähiges grafik-api
hast das in winXP einwandfrei läuft und in 8bit farbmodus!!
bitte posten....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: