add some more info

This commit is contained in:
Luca Conte 2025-03-09 22:05:05 +01:00
parent 56890b78f4
commit 0ed01d8eac
1 changed files with 109 additions and 11 deletions

120
README.md
View File

@ -1,26 +1,59 @@
Dieses Readme soll helfen, die Umgebung für die Computergrafik Übungen einzurichten.
**Merke:** Ich nutze [Meson](https://mesonbuild.com/) statt Make, somit wird `pkgconf` nicht benötigt, und Cross-Platform Entwicklung wird etwas erleichtert.
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:
- WSL (Windows Subsystem for Linux)
- Nutzt die Linux Umgebung unter Windows
- Nativ Windows mit MSYS2 bzw MINGW64
- Nutzt Windows spezifische Tools
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
```bash
sudo apt update
```
# basic build tools such as gcc
Grundlegende Tools wie gcc und make installieren
```
sudo apt install build-essential
```
# meson and ninja for building
Meson und Ninja (wird für Meson benötigt) installieren
```
sudo apt install meson ninja-build
```
# glfw
GLFW installieren
```
sudo apt install libglfw3 libglfw3-dev
```
# glew
GLEW installieren
```
sudo apt install libglew-dev
```
# WSL
Für grafische Anwendungen wird WSL 2 benötigt
**Für grafische Anwendungen wird WSL 2 benötigt.**
## Virtualisierung Aktivieren
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](https://learn.microsoft.com/de-de/windows/wsl/install)
## WSL zu WSL 2 upgraden
### Virtualisierung Aktivieren
Virtualisierung kann über die Powershell oder im BIOS aktiviert werden und ist notwendig für WSL 2
@ -31,7 +64,7 @@ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux
Anschließend Windows neustarten
## WSL Updaten
### WSL Updaten
```
# aktuelle Version anzeigen
@ -46,7 +79,8 @@ wsl --update
## Hilfreiche Links
- [Installieren von Linux unter Windows mit WSL - Microsoft Learn](https://learn.microsoft.com/de-de/windows/wsl/install)
(Danke an Rebecca Trautner)
- [Using c++ and WSL in VS Code](https://code.visualstudio.com/docs/cpp/config-wsl)
- [Diagnosing "cannot open display" type issues in WSLg](https://github.com/microsoft/wslg/wiki/Diagnosing-%22cannot-open-display%22-type-issues-with-WSLg)
@ -90,7 +124,7 @@ $ pacman -S git
## mingw64 Pfad zur "Path" Umgebungsvariable hinzufügen
Dieser Schritt ist nur notwendig, wenn das Programm auch ohne MSYS2 gestartet werden soll.
Dieser Schritt ist nur notwendig, wenn das Programm auch ohne MSYS2 gestartet werden soll (also Doppelclick auf die `.exe` Datei)
```
C:\msys64\mingw64\bin
@ -101,11 +135,75 @@ C:\msys64\mingw64\bin
- -> "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. Alternati, 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:
# Building and running
`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 setup build
meson compile -C build
./build/cg1
```
```
# MacOS
**Merke:** Da ich selber kein MacOS 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:
```c
#include <GL/glew.h>
#include <OpenGL/gl.h>
#include <OpenGL/glext.h>
#include <GLFW/glfw3.h>
#include <stdio.h>
```
8. im Makefile:
```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:
```glsl
layout (location = 0) out fragColor;
```
Diese kann dann statt `gl_FragColor` verwendet werden.
---
Bei weiteren Fragen, meldet euch gerne bei mir oder Dennis per E-Mail oder sprecht uns in einer der Übungen an.
<dennis.allerkamp@hs-hannover.de>
<luca.conte@stud.hs-hannover.de>