Go to file
Luca Conte 7b28b5621f u03-3 2025-03-11 11:41:26 +01:00
src u03-3 2025-03-11 11:41:26 +01:00
.gitignore add gitignore 2025-03-05 22:10:38 +01:00
Makefile cross platform make 2025-03-09 22:32:47 +01:00
README.md additional contact info 2025-03-09 23:15:33 +01:00
meson.build fix math dependency 2025-03-11 10:52:47 +01:00

README.md

Dieses Readme soll helfen, die Umgebung für die Computergrafik Übungen einzurichten.

Merke: Ich nutze Meson statt Make, somit wird pkgconf nicht benötigt, und Cross-Platform Entwicklung wird etwas erleichtert. Diese Anleitung ist jedoch auch für Makefile Nutzer geeignet.

Unter Linux ist das Bearbeiten der Aufgaben am einfachsten. Dieses Readme beschreibt aber auch Möglichkeiten, die Aufgaben unter Windows zu bearbeiten, sowie eine Anleitung für macOS.

Für Windows gibt es zwei Möglichkeiten:

Der Entwicklungsprozess ist mit beiden Methoden relativ gleich. Nur im Aufsetzen der Umgebung gibt es Unterschiede.
Die Performance wird mit dem nativen Windows Ansatz besser sein, jedoch sind auch schwächere Geräte meist problemlos in der Lage, die Aufgaben unter WSL zu bearbeiten.

Ubuntu / WSL

Package Datenbank synchronisieren

sudo apt update

Grundlegende Tools wie gcc und make installieren

sudo apt install build-essential

Meson und Ninja (wird für Meson benötigt) installieren

sudo apt install meson ninja-build

pkgconf installieren (wird für Make benötigt)

sudo apt install pkgconf

GLFW installieren

sudo apt install libglfw3 libglfw3-dev

GLEW installieren

sudo apt install libglew-dev

WSL

Für grafische Anwendungen wird WSL 2 benötigt.

Ist WSL 2 bereits installiert, können benötigte Pakete installiert werden wie oben beschrieben.

WSL Installieren

Installieren von Linux unter Windows mit WSL - Microsoft Learn

WSL zu WSL 2 upgraden

Virtualisierung Aktivieren

Virtualisierung kann über die Powershell oder im BIOS aktiviert werden und ist notwendig für WSL 2

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Anschließend Windows neustarten

WSL Updaten

# aktuelle Version anzeigen
wsl -l -v

# Version ändern
wsl --set-version <distro-name> 2

# Updaten
wsl --update

(Danke an Rebecca Trautner)

Windows Native

MSYS2 Installation

MSYS2 dient als Entwicklungsumgebung und stellt Tools wie Make und gcc zur Verfügung

Download und Installationsanleitung

Alle folgenden Schritte sollten im MSYS2 MINGW64 Terminal ausgeführt werden.

Libraries installieren

Package Datenbank synchronisieren

pacman -Syu

Libraries installieren

pacman -S mingw-w64-x86_64-glfw mingw-w64-x86_64-glew

Meson installieren (Empfehlung)

pacman -S mingw-w64-x86_64-meson

gcc installieren

pacman -S mingw-w64-x86_64-gcc

git installieren (Empfehlung)

pacman -S git

mingw64 Pfad zur "Path" Umgebungsvariable hinzufügen

Dieser Schritt ist nur notwendig, wenn das Programm auch ohne MSYS2 gestartet werden soll (also Doppelclick auf die .exe Datei)

C:\msys64\mingw64\bin
  • Windows Suche -> "Umgebungsvariablen" eintippen
  • -> "Umgebungsvariablen..."
  • -> "Path" -> "Bearbeiten" -> "Neu" -> Pfad einfügen
  • Neue Umgebungsvariablen werden erst nach Programm Neustart übernommen

Der Code dieses Projekts ist außerdem darauf ausgelegt, dass die Datei aus dem Wurzelverzeichnis des Repositories ausgeführt wird. Die Shader Pfade z.B. sind relativ zum Wurzelverzeichnis. Die Datei muss also aus dem /build Verzeichnis in das Wurzelverzeichnis des Repositories verschoben werden. Alternativ, um die .exe Datei von einem anderen Verzeichnis auszuführen, kann man Mit Rechtsclick -> "Verknüpfung erstellen" eine Verknüpfung erstellen und anschließend in den Eigenschaften das Start-Verzeichnis ändern:

C:/Pfad/Zum/Projekt/build -> C:/Pfad/Zum/Projekt

Kompilieren und Ausführen

Nach den oben beschriebenen Schritten sollte das Projekt kompiliert und ausgeführt werden können.

Meson

meson setup build # muss nur beim ersten Mal ausgeführt werden

meson compile -C build # kompiliert das Projekt

# Ausführen
./build/cg1 # linux
./build/cg1.exe # windows

Make

make # kompiliert das Projekt

# Ausführen
./cg1 # linux
./cg1.exe # windows

MacOS

Merke: Da ich selber kein MacOS habe kann ich diese Schritte leider nicht replizieren. Diese Anleitung wurde geschrieben von Paul-Christoph Otte (Danke!), welcher 2024 dieses Modul belegt hat. Entsprechend wird hier nicht Meson genutzt.


Eine kleine Anleitung für CG1 mit VSCode und einem MacBook M1:

  1. Homebrew installieren

  2. Mit Homebrew glew, glfw, pkgconf installieren (brew install glew / brew install glfw / brew install pkgconf)

  3. unter /usr/local/ einen neuen Ordner "include" erstellen

  4. Dort Ordner reinkopieren (habe welche geschickt bekommen, dürfte aber auch gehen, wenn ihr die Ordner von homebrew reinkopiert. Die liegen unter /opt/homebrew/Cellar/)

  5. In VSCode den IntelliSenseMode auf gcc ändern (standardmäßig war bei mir clang, bei M1: macos-gcc-arm64)

  6. Include-path in vscode hinzufügen: /usr/local/include (In c_cpp_properties.json date)

  7. in main.c includes anpassen:

#include <GL/glew.h>
#include <OpenGL/gl.h>
#include <OpenGL/glext.h>
#include <GLFW/glfw3.h>
#include <stdio.h>
  1. im Makefile:
GLEW_LIBS=$(shell pkgconf glew --libs)
GLFW_LIBS=$(shell pkgconf glfw3 --libs)

cg1: main.c
	gcc -o cg1 -std=c17 main.c -w $(GLEW_LIBS) $(GLFW_LIBS) -framework OpenGL

Weitere Info von Dennis zu macOS:

unter macOS gibt es noch ein interessantes Problem: Die OpenGL-Version unterstützt offenbar nicht die Ausgabevariable gl_FragColor im Fragment-Shader.

Stattdessen müsst ihr selbst eine Ausgabevariable deklarieren:

layout (location = 0) out fragColor;

Diese kann dann statt gl_FragColor verwendet werden.


Bei weiteren Fragen, meldet euch gerne bei Dennis oder bei mir per E-Mail oder sprecht uns in einer der Übungen an.

dennis.allerkamp@hs-hannover.de | luca.conte@stud.hs-hannover.de

Oder noch besser: Stellt die Fragen im Selbsthilfeforum, für den Fall, dass andere das gleiche Problem haben. Dann haben alle was davon. :)