Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/codencandy/clock
Analog Clock for MacOS written in Obj-C and C
https://github.com/codencandy/clock
macos-application metal-renderer
Last synced: 2 days ago
JSON representation
Analog Clock for MacOS written in Obj-C and C
- Host: GitHub
- URL: https://github.com/codencandy/clock
- Owner: codencandy
- License: other
- Created: 2024-02-23T15:34:14.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2024-04-16T04:48:51.000Z (9 months ago)
- Last Synced: 2024-11-08T11:13:22.909Z (about 2 months ago)
- Topics: macos-application, metal-renderer
- Language: C++
- Homepage:
- Size: 10.6 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
![](res/clock.png)
## Analog clock app for MacOS
This small project builds an analog clock featuring the following concepts:
- creating an application object
- creating a window
- unity build
- drawing with a constant frame rate
- creating a hardware renderer using the Metal framework
- loading images (PNG files)
- GPU shaders (Metal shading language)
- texture mapping
- 2D projection
- 2D rotation
- separation between platform layer and application## What you need
All you need to follow along or just build this project is:
- Visual Studio Code
- XCode command line tools (not XCode itself)
- [cloc to measure lines of code](https://formulae.brew.sh/formula/cloc)## VS Code extensions
The following VS Code extensions are also partly necessary:
- [C/C++ Extension Pack](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools-extension-pack)
- [C/C++ Clang Command Adapter](https://marketplace.visualstudio.com/items?itemName=mitaki28.vscode-clang)
- [Metal Shader Extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=doublebuffer.metal-shader)## How to build and run
In order to build the project execute
```sh build.sh```
in the root directory of this projectIn order to run execute
```./clock```