Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 14, 2025 19:37

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL Fullscreen Initailisierung
BeitragVerfasst: Do Mär 17, 2005 13:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 30, 2004 14:49
Beiträge: 71
Wohnort: STADT Kirchen
Moien. Folgendes Problem: Ich versuche ein OpenGL Fenster im Vollbild Modus zu erstellen. Aber das Problem ist folgendes:

Bild


Weiß jemand auf Anhieb, woran es liegen könnte? Sonst poste ich auch noch den Source von der Initialisierung.

_________________
Rock is a message.
Hear the message an you will rock!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 17, 2005 13:10 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
ich kenne das bislang nur, wenn du versuchst einen auflösung einzustellen, die nicht unterstützt wird von grafikkarte oder monitor.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 17, 2005 13:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 30, 2004 14:49
Beiträge: 71
Wohnort: STADT Kirchen
Habe folgende Auflösungen probiert: 640x480x16, 1024x768x16 und 1280x1024x16 Also mindestens eine von denen sollte unterstützt werden

_________________
Rock is a message.
Hear the message an you will rock!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 17, 2005 13:38 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
hm, dann zeig doch mal den code-abschnitt, mit dem du versuchst, die äuflösung zu ändern. evtl. stimmt ja etwas mit dem Aufruf nicht - oder ist das code aus unserem Template?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 17, 2005 13:57 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 30, 2004 14:49
Beiträge: 71
Wohnort: STADT Kirchen
Ne, ist eigener Code.

Hier die Initialisierung:

Code:
  1.  
  2.  
  3. Procedure glInit();
  4. Begin
  5.  glEnable(GL_TEXTURE_2D);
  6.  glShadeModel(GL_SMOOTH);
  7.  glClearColor(0.0, 0.0, 0.0, 0.5);
  8.  glClearDepth(1.0);
  9.  glEnable(GL_DEPTH_TEST);
  10.  glDepthFunc(GL_LEQUAL);
  11.  glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  12.  glStatus.glInit:= True;
  13. End;
  14.  
  15. Procedure glResizeWnd(Width, Height: Integer);
  16. Begin
  17.  If glStatus.glInit then
  18.  Begin
  19.   If (Height = 0) then Height := 1;
  20.   glViewport(0, 0, Width, Height);
  21.   glMatrixMode(GL_PROJECTION);
  22.   glLoadIdentity;
  23.   gluPerspective(45.0, Width/Height, 1.0, 100.0);
  24.   glMatrixMode(GL_MODELVIEW);
  25.   glLoadIdentity;
  26.  End;
  27. End;
  28.  
  29. Function glNewWindow(Width, Height: Integer; BPP: Integer; Var Fullscreen: Boolean; Window_Title: String): Boolean;
  30. Var
  31.  wndClass: TWndClass;
  32.  dwStyle: DWORD;
  33.  dwExStyle: DWORD;
  34.  dmScreenSettings: DEVMODE;
  35.  PixelFormat: GLuint;
  36.  h_Instance: HINST;
  37.  pfd: TPIXELFORMATDESCRIPTOR;
  38.  
  39. Begin
  40.  glConfig.WindowTitle:= Window_Title;
  41.  h_Instance:= GetModuleHandle(nil);
  42.  ZeroMemory(@wndClass, SizeOf(wndClass));
  43.  
  44.  With wndClass do
  45.  Begin
  46.   style:= CS_HREDRAW or CS_VREDRAW or CS_OWNDC;
  47.   lpfnWndProc:= @WndProc;
  48.   hInstance:= h_Instance;
  49.   hCursor:= LoadCursor(0, IDC_ARROW);
  50.   lpszClassName:= 'OpenGL';
  51.  End;
  52.  
  53.  If (RegisterClass(wndClass) = 0) then
  54.  Begin
  55.   MessageBox(0, 'Die Fensterklasse konnte nicht registriert werden!', 'Atomkraft GAU', MB_OK or MB_ICONERROR);
  56.   Result:= False;
  57.   Exit;
  58.  End;
  59.  
  60.  If Fullscreen then
  61.  Begin
  62.   ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings));
  63.   With dmScreenSettings do
  64.   Begin
  65.    dmSize:= SizeOf(dmScreenSettings);
  66.    dmPelsWidth:= Width;
  67.    dmPelsHeight:= Height;
  68.    dmBitsPerPel:= BPP;
  69.    dmFields:= DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL;
  70.   End;
  71.  
  72.   If (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) then
  73.   Begin
  74.    MessageBox(0, 'Der Vollbildmodus konnte nicht eingestellt werden!', 'Atomkraft GAU', MB_OK or MB_ICONERROR);
  75.    Fullscreen:= False;
  76.    dwStyle:= WS_OVERLAPPEDWINDOW or WS_CLIPCHILDREN or WS_CLIPSIBLINGS;
  77.    dwExStyle:= WS_EX_APPWINDOW or WS_EX_WINDOWEDGE;
  78.   End;
  79.  End;
  80.  
  81.  If (Fullscreen) then
  82.  Begin
  83.   dwStyle:= WS_POPUP or WS_CLIPCHILDREN or WS_CLIPSIBLINGS;
  84.   dwExStyle:= WS_EX_APPWINDOW;
  85.   ShowCursor(False);
  86.  End
  87.  else
  88.  Begin
  89.   dwStyle:= WS_OVERLAPPEDWINDOW or WS_CLIPCHILDREN or WS_CLIPSIBLINGS;
  90.   dwExStyle:= WS_EX_APPWINDOW or WS_EX_WINDOWEDGE;
  91.  End;
  92.  
  93.  glSystem.h_Wnd:= CreateWindowEx(dwExStyle, 'OpenGL', PChar(glConfig.WindowTitle), dwStyle, 0, 0, Width, Height, 0, 0, h_Instance, nil);
  94.  If glSystem.h_Wnd = 0 then
  95.  Begin
  96.   glCloseWindow;
  97.   MessageBox(0, 'Das Fenster konnte nicht erstellt werden!', 'Atomkraft GAU', MB_OK or MB_ICONERROR);
  98.   Result:= False;
  99.   Exit;
  100.  End;
  101.  
  102.  InitOpenGL;
  103.  
  104.  glSystem.h_DC := GetDC(glSystem.h_Wnd);
  105.  If (glSystem.h_DC = 0) then
  106.  Begin
  107.   glCloseWindow;
  108.   MessageBox(0, 'Die Atomkraft konnte nicht initialisiert werden!', 'Atomkraft GAU', MB_OK or MB_ICONERROR);
  109.   Result:= False;
  110.   Exit;
  111.  End;
  112.  
  113.  With pfd do
  114.  Begin
  115.   nSize:= SizeOf(TPIXELFORMATDESCRIPTOR);
  116.   nVersion:= 1;
  117.   dwFlags:= PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
  118.   iPixelType:= PFD_TYPE_RGBA;
  119.   cColorBits:= BPP;
  120.   cRedBits:= 0; cGreenBits:= 0; cBlueBits:= 0; cAlphaBits:= 0;
  121.   cRedShift:= 0; cGreenShift:= 0; cBlueShift:= 0; cAlphaShift:= 0;
  122.   cAccumBits:= 0; cAccumRedBits:= 0; cAccumGreenBits:= 0; cAccumBlueBits:= 0; cAccumAlphaBits:= 0;
  123.   cDepthBits:= 16;
  124.   cStencilBits:= 0;
  125.   cAuxBuffers:= 0;
  126.   iLayerType:= PFD_MAIN_PLANE;
  127.   bReserved:= 0;
  128.   dwLayerMask:= 0;
  129.   dwVisibleMask:= 0;
  130.   dwDamageMask:= 0;
  131.  End;
  132.  
  133.  PixelFormat:= ChoosePixelFormat(glSystem.h_DC, @pfd);
  134.  If (PixelFormat = 0) then
  135.  Begin
  136.   glCloseWindow;
  137.   MessageBox(0, 'Es konnte keine unterstützte Auflösung gefunden werden', 'Atomkraft GAU', MB_OK or MB_ICONERROR);
  138.   Result:= False;
  139.   Exit;
  140.  End;
  141.  
  142.  If (not SetPixelFormat(glSystem.h_DC, PixelFormat, @pfd)) then
  143.  Begin
  144.   glCloseWindow;
  145.   MessageBox(0, 'Die gewählte Auflösung konnte nicht eingestellt werden', 'Error', MB_OK or MB_ICONERROR);
  146.   Result:= False;
  147.   Exit;
  148.  End;
  149.  
  150.  glSystem.h_RC:= wglCreateContext(glSystem.h_DC);
  151.  If (glSystem.h_RC = 0) then
  152.  Begin
  153.   glCloseWindow;
  154.   MessageBox(0, 'Fehler bei der Initialisierung', 'Atomkraft GAU', MB_OK or MB_ICONERROR);
  155.   Result:= False;
  156.   Exit;
  157.  End;
  158.  
  159.  ActivateRenderingContext(glSystem.h_DC, glSystem.h_RC);
  160.  
  161.  If (not wglMakeCurrent(glSystem.h_DC, glSystem.h_RC)) then
  162.  Begin
  163.   glCloseWindow;
  164.   MessageBox(0, 'Fehler bei der Initialisierung', 'Atomkraft GAU', MB_OK or MB_ICONERROR);
  165.   Result:= False;
  166.   Exit;
  167.  End;
  168.  
  169.  SetTimer(glSystem.h_Wnd, FPS_TIMER, FPS_INTERVAL, nil);
  170.  
  171.  ShowWindow(glSystem.h_Wnd, SW_SHOW);
  172.  SetForegroundWindow(glSystem.h_Wnd);
  173.  SetFocus(glSystem.h_Wnd);
  174.  
  175.  glInit;
  176.  glResizeWnd(Width, Height);
  177.  
  178.  Result:= True;
  179.  glSystem.appStart:= GetTickCount;
  180.  WriteLn(Fullscreen);
  181. End;
  182.  



Falls das nicht reichen sollte: Hier das komplette Projekt+Bins: http://akwclan.servegame.org/external/downloads/ogl/dgltest1.rar

Man sollte dazu sagen, dass ich das mit FPC compiliert habe.

_________________
Rock is a message.
Hear the message an you will rock!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 17, 2005 16:33 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
jetzt wäre natürlich noch interessant zu wissen, ob dieser Code aufgerufen würd und die entsprechende Box erscheint:
MessageBox(0, 'Der Vollbildmodus konnte nicht eingestellt werden!', 'Atomkraft GAU', MB_OK or MB_ICONERROR);


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 17, 2005 17:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 30, 2004 14:49
Beiträge: 71
Wohnort: STADT Kirchen
Ne, da kommt keine Box und nix.

Was ich mal gemacht habe war ist, an "dwStyle:= WS_POPUP or WS_CLIPCHILDREN or WS_CLIPSIBLINGS" noch "or WS_Maximize" dran zu hängen. Dann habe ich den zwar im Vollbildmodus, aber dann blinkt der immer. So als wenn der immer schnell zwischen zwei Fenstern hin und her schalten würde.

_________________
Rock is a message.
Hear the message an you will rock!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]