news.volyx.in

Making a 3D modeler in C in a week (danielchasehooper.com)

680 points by jasim · 834 days ago · 187 comments on HN

Article summary

The author created a 3D modeler called ShapeUp in C within a week as part of a programming event. The project utilized ray marched signed distance fields (SDFs) for rendering and was built using the raylib library, which proved to have its limitations. The author reflects on the experience, discussing the simplicity and strengths of the C language, as well as the challenges and drawbacks of using raylib. The resulting 3D modeler is a relatively simple project that can create and export 3D models.

Main themes

  • 3D modeling
  • C programming language
  • Raylib library
  • Game development
  • Performance optimization
  • Software development challenges

What commenters say

  • Raylib is a convenient library for quickly creating prototypes, but it has significant limitations and issues that make it less suitable for larger projects.
  • The library's lack of parameter validation and poor documentation can lead to frustrating debugging experiences and unexpected behavior.
  • Smooth scrolling in web browsers and modern operating systems is a complex issue due to various technical challenges, including micro-stutter and frame duration jitter.
  • Using borderless windowed mode instead of true fullscreen can be a viable workaround for performance and compatibility issues, but may have its own set of limitations and drawbacks.
  • The choice of programming language and library can significantly impact the development process and final product, with C offering a unique set of strengths and weaknesses.
  • Performance differences between borderless-fullscreen and exclusive-fullscreen modes depend on various factors, including the operating system and how frames are presented.
  • Raylib's issues, such as lack of antialiasing and poor handling of mouse events, can be mitigated with workarounds and custom implementations, but may still pose significant challenges for developers.