Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

VuuRWerK

Frischling

  • »VuuRWerK« ist der Autor dieses Themas

Beiträge: 59

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

1

24.04.2009, 22:11

OpenGL rendern ohne Frame

Hallo Ihrs,

wäre es möglich mit OpenGL direkt auf den Bildschirm zu rendern, ohne dem Window-Frame (sei es das erzeugte von GLUT oder ein selbst geschriebenes)? Ich meine dabei nicht Vollbild und auch nicht das offline rendern was man mit dem DesktopHandle machen kann. Ich meine sichtbares zeichnen von primitiven auf den Bildschirm, um es mal ganz naiv auszudrücken. Denke mal das beschreibt es am besten was ich mir vorstelle :)

Aber halt nur wenn es möglich ist mit OpenGL. DirectX ist an Windows gebunden und ich hoffe auf eine möglichst Plattformunabhängige Lösung, sofern möglich.

Gut Schuß
VuuRWerK ;)
http://german-bash.org/212445
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." - Bjarne Stroustrup

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

24.04.2009, 22:20

Ohne irgendeine Art von Fenster kommst du afaik nicht aus. Das was dir vorschwebt ist ja anscheinend nochmal auf den Bildschirm zu malen unmittelbar bevor das Bild auf dem Monitor sichtbar gemacht wird?

WhiteMike

Alter Hase

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

3

25.04.2009, 11:26

Dieser Artikel beschreibt, wie man auf dem Desktop direkt zeichnen kann.
Mit ein wenig Glück kannst du das vielleicht auf OpenGL beziehen.

http://sppro.fkrauthan.de/2008/09/11/auf-den-desktop-zeichnen/

Mit freundlichen Grüßen,
WhiteMike

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

4

25.04.2009, 11:52

Auch der Desktop ist (Windows technisch gesehen) ein Fenster. Zumindestens unter Windows wird man um Fenster also nicht rumkommen.

5

25.04.2009, 12:04

Zitat von »"Das Gurke"«

Auch der Desktop ist (Windows technisch gesehen) ein Fenster. Zumindestens unter Windows wird man um Fenster also nicht rumkommen.

Windows: alles ist ein fenster
Linux: alles ist eine Datei

aber dateien sind auch unter windows keine fenster :shock:
:badgrin: :badgrin:

VuuRWerK

Frischling

  • »VuuRWerK« ist der Autor dieses Themas

Beiträge: 59

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

6

25.04.2009, 13:16

Richtig, deswegen hab ich geschrieben ohne Frame. ;)

Vielen Dank für den Link ich werds mal austesten, jedoch vermute ich dass das genau die Sache mit dem Offline-Rendering war wo eben nichts von OpenGL gezeichnet wird, hab es so zumindestens beim googlen vorher gelesen. Danke trotzdem und ich Berichte von meinen Ergebnissen.

Gut Schuß
Christian ;)
http://german-bash.org/212445
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." - Bjarne Stroustrup

VuuRWerK

Frischling

  • »VuuRWerK« ist der Autor dieses Themas

Beiträge: 59

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

7

25.04.2009, 23:18

Sorry, bin jetzt erst dazu gekommen es auszuprobieren. Jedoch klappt es nicht, es kommen zwar keine Fehler aber zu sehen ist nix :( Mit GDI funktionierts aber mit OpenGL nicht. Hier mal zum nachschauen mein Code, möglicherweise hab ich vllt. auch noch was vergessen.


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <windows.h>
#include <GL/glee.h>

int main(int argc, char* argv[]) {
  HDC hdc;
  hdc = CreateDC("DISPLAY", NULL, NULL, NULL);
#if 0
  // GDI version

  SelectObject(hdc, CreateSolidBrush(RGB(255, 0, 0)));
  Rectangle(hdc, 100, 100, 200, 200);
  system("pause");  // pfui!!!

#else
  // OpenGL version

  PIXELFORMATDESCRIPTOR pfd;
  memset(&pfd, 0, sizeof(pfd));
  pfd.nSize = sizeof(pfd);
  pfd.nVersion = 1;
  pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
  pfd.iPixelType = PFD_TYPE_RGBA;
  pfd.cColorBits = 32;

  int pf = ChoosePixelFormat(hdc, &pfd);
  SetPixelFormat(hdc, pf, &pfd);
  DescribePixelFormat(hdc, pf, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
  HGLRC hrc = wglCreateContext(hdc);
  wglMakeCurrent(hdc, hrc);
  glClear(GL_COLOR_BUFFER_BIT);
  glBegin(GL_TRIANGLES);
  {
    glColor3f(1.0f, 0.0f, 0.0f);
    glVertex2i(0, 1);
    glColor3f(0.0f, 1.0f, 0.0f);
    glVertex2i(-1, -1);
    glColor3f(0.0f, 0.0f, 1.0f);
    glVertex2i(1, -1);
  }
  glEnd();
  glFlush();

  system("pause");  // pfui!!!


  wglMakeCurrent(NULL, NULL);
  wglDeleteContext(hrc);
#endif
  DeleteDC(hdc);
  return 0;
}


Ansonsten muss ich halt versuchen ein Frame zu erzeugen jedoch ohne "decoration", das sollte ja gehen. Mal schaun.

Gut Schuß
VuuRWerK ;)
http://german-bash.org/212445
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." - Bjarne Stroustrup

VuuRWerK

Frischling

  • »VuuRWerK« ist der Autor dieses Themas

Beiträge: 59

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

8

26.04.2009, 17:12

Also ich hab jetzt nochmal intensiv recherchiert und es scheint keinen Weg zugeben der es mir ohne Frame erlaubt auf den Screen zu malen. Ich hab schon überlegt den Grafikspeicher vom BS zu holen und dann selbst zu manipulieren, bspw. wie in SDL, das geht dann aber schon stark in Richtung Software-Renderer.

Gut Schuß
VuuRWerK ;)
http://german-bash.org/212445
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." - Bjarne Stroustrup

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

9

26.04.2009, 17:24

Du könntest doch auch ein Topmost Fenster machen, welches keinen Rahmen hat, und einen Transparenten Hintergrund.
Das sollte doch auch den Effekt erzeugen, den du benötigst.
Oder?

mfg Philipp

VuuRWerK

Frischling

  • »VuuRWerK« ist der Autor dieses Themas

Beiträge: 59

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

10

26.04.2009, 17:34

Ja das hatte ich ja auch schon gedach. Ich wollte aber erstmal nach einer BS-Unabhängigen Implementierung ausschau halten und das heist eben Grafikspeicher entweder über ein Schnittstelle ala OpenGL zu manipulieren oder eben schauen das man selber rankommt.

Gut Schuß
VuuRWerK ;)
http://german-bash.org/212445
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." - Bjarne Stroustrup

Werbeanzeige