TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Learning Modern 3D Graphics Programming (2012)

180 点作者 jasim超过 2 年前

15 条评论

andsoitis超过 2 年前
The most popular modern graphics (GPU) APIs are DirectX 12 (Microsoft), Metal (Apple), and Vulkan (Khronos Group).<p>Targeting all three can be tough, hence WebGPU which lets you write to a single API. Support on non-web runtimes have been appearing as well, so you&#x27;re not necessarily limited to the browser (e.g. <a href="https:&#x2F;&#x2F;github.com&#x2F;samdauwe&#x2F;webgpu-native-examples">https:&#x2F;&#x2F;github.com&#x2F;samdauwe&#x2F;webgpu-native-examples</a>).<p>Good read: <a href="https:&#x2F;&#x2F;surma.dev&#x2F;things&#x2F;webgpu&#x2F;" rel="nofollow">https:&#x2F;&#x2F;surma.dev&#x2F;things&#x2F;webgpu&#x2F;</a><p>Tutorial for learning Vulkan: <a href="https:&#x2F;&#x2F;www.vulkan.org&#x2F;learn#vulkan-tutorials" rel="nofollow">https:&#x2F;&#x2F;www.vulkan.org&#x2F;learn#vulkan-tutorials</a>
评论 #34169605 未加载
评论 #34170025 未加载
评论 #34166470 未加载
评论 #34166522 未加载
评论 #34166468 未加载
评论 #34166511 未加载
评论 #34170336 未加载
sacnoradhq超过 2 年前
I suggest learning and doing the hard way(tm) without acceleration from very primitive rendering techniques moving from basic to advanced, and old to new, gradually<p>Step -1. Math - Learn about quaternions, frustums, camera matrix, and transformation matrixes.<p>Step 0. Pixels - Draw pixels &#x2F; scan lines to a window or display<p>Step 1. &quot;Triangles&quot; - Draw scan-line aligned trapezoids with a W-&#x2F;Z-buffer painter&#x27;s algorithm (back to front). Multiple or single trapezoids in 2D are the results of projected triangles in 3D.<p>Step 2. Constructive Solid Geometry - Generate triangles given additive and&#x2F;or subtractive shapes - Cube minus sphere intersecting<p>Step 3. Lighting and shading - The old school Phong and Gouraud materials and lighting<p>Step 4. Texture mapping - The math to map a raster image onto triangles<p>Step 5. Simple MIP mapping - The math to map various resolutions of raster images onto triangles<p>Step 6. Isotropic (bilinear and trilinear) filtering<p>Step 7. Anisotropic filtering<p>Step 8. Bump mapping - Perturb the normals<p>Step 9. Oversampling (FSAA) - Render on an N-times bigger virtual canvas, apply a kernel reduction matrix (possibly mean average), and copy to the real display area<p>Step 10. Clipping and culling - Octrees, quadtrees, AABBtree, BVH, BSP, and k-d trees<p>Step 11. Get fancy with animation
评论 #34168444 未加载
评论 #34172787 未加载
legends2k超过 2 年前
Here&#x27;s my curated list of CG resources for self-study:<p><a href="https:&#x2F;&#x2F;legends2k.github.io&#x2F;note&#x2F;cg_resources&#x2F;" rel="nofollow">https:&#x2F;&#x2F;legends2k.github.io&#x2F;note&#x2F;cg_resources&#x2F;</a><p>After learning Vulkan, OpenGL or the next shiny API: it doesn&#x27;t matter. Computer graphics and 3D math concepts don&#x27;t change across APIs. The concepts you learn and make GPU do things is the same. Just the language or dialect differs. I started with OpenGL, but I now program in D3D, WebGL, etc. Learn the basics, avoid the religious wars.<p>In fact when learning something not as complex as Vulkan will help, since lots of noise (boilerplate) to hide the signal (cg concepts).<p>Cheers!
gfxgirl超过 2 年前
Given that OpenGL is basically deprecated at this point this arguably is no longer &quot;modern 3D graphics programming&quot;<p>If you still want to learn OpenGL there&#x27;s <a href="https:&#x2F;&#x2F;learnopengl.com" rel="nofollow">https:&#x2F;&#x2F;learnopengl.com</a>
评论 #34166656 未加载
评论 #34165914 未加载
评论 #34165915 未加载
评论 #34166537 未加载
评论 #34170577 未加载
评论 #34166541 未加载
moth-fuzz超过 2 年前
I’ve begun to learn Vulkan recently, and honestly, the API is not the best. But I feel like it’s the best long-term option - it’s really more about the mental model: buffers, pipelines, commands and queues, all exist in one way or another in Vulkan, Metal, and DX12. OpenGL is the odd one out as it’s a global state machine. That said, you can build a vulkan-like abstraction atop of OpenGL (I’ve tried).<p>The problem however, is compatibility. We’re in a very weird transitional era for graphics. Things aren’t unified anymore. Modern OpenGL features that aren’t difficult to implement are held back by drivers since most of that work is done by drivers in the first place. It’s not like the GPU can or can’t do these things, it’s that the vendors don’t expose that functionality. Vulkan is not available on my ivy bridge thinkpad (unless I run Linux and an open source driver). OpenGL greater than 4.1 is not available on MacOS because apple writes the drivers and they chose to stop writing them. Vulkan is not available natively on MacOS, except, with MoltenVK you can enable it, since at the end of the chain a GPU is just a GPU and it doesn’t care what API you use. Microsoft, in their commitment to legacy compatibility, allows DX12 to run on any windows machine made in the last decade, the catch is it’s windows only. So all the options have their ups and downs and pitfalls whereas it felt like 10 years ago OpenGL was ‘the’ answer.<p>Honestly, the state of graphics programming is a mess. To be compatible, you have to stick to some narrow versions of OpenGL that are uncomfortable and outdated, because computers or drivers are either too old or too new or both, or you have to write individual abstractions for every platform you target.<p>I hate the state of it but I get why indie devs are all just using Unity now. When I was growing up it was SDL2+OpenGL, and then it was XNA, but it seems coding at all is too much now. And I don’t really blame them, the problem domain has expanded significantly and the knowledge required has expanded along with it. Libraries can’t just be libraries to solve one task, they have to be frameworks or engines or entire graphical editors because all this is just too much for one person to figure out anymore. I just wanna write some code that draws some shapes, man.
评论 #34169774 未加载
评论 #34170678 未加载
评论 #34170762 未加载
aappleby超过 2 年前
Old graphics dev here who has mentored new hires in basic rendering tech.<p>Learn JavaScript+WebGL to the point where you can render simple models with textures, shaders, and a basic camera controller.<p>Then, if you enjoy it and want to go further, do the same but in your favorite language + Vulkan.
评论 #34166961 未加载
评论 #34166364 未加载
评论 #34167106 未加载
评论 #34166790 未加载
hactually超过 2 年前
I&#x27;d recommend taking a look at either <a href="https:&#x2F;&#x2F;vkguide.dev" rel="nofollow">https:&#x2F;&#x2F;vkguide.dev</a> or my preferred <a href="https:&#x2F;&#x2F;vulkan-tutorial.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;vulkan-tutorial.com&#x2F;</a><p>I remember learning &quot;modern&quot; OpenGL back in 2005
评论 #34166327 未加载
评论 #34166563 未加载
pjmlp超过 2 年前
Not so modern after a decade.<p>For OpenGL, there is DSA and SPIR-V support.<p>And then there is Metal, Vulkan and DX 12, alongside NVN and LibGNM&#x2F;GNMX.
评论 #34165904 未加载
attheicearcade超过 2 年前
For anyone wishing to get a taste of very modern graphics programming with Vulkan, I enjoyed Arseny Kapoulkine’s YouTube series [0]. Although he focuses somewhat on mesh shading, he does also build a more traditional pipeline alongside it. I found it much nicer to follow along with this than grind through the first X hours via written tutorials.<p>[0] <a href="https:&#x2F;&#x2F;youtube.com&#x2F;playlist?list=PL0JVLUVCkk-l7CWCn3-cdftR0oajugYvd">https:&#x2F;&#x2F;youtube.com&#x2F;playlist?list=PL0JVLUVCkk-l7CWCn3-cdftR0...</a>
overgard超过 2 年前
<a href="https:&#x2F;&#x2F;vkguide.dev&#x2F;" rel="nofollow">https:&#x2F;&#x2F;vkguide.dev&#x2F;</a> Might be a better alternative for 2022
dang超过 2 年前
Related:<p><i>Learning Modern 3D Graphics Programming</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=7746192" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=7746192</a> - May 2014 (11 comments)<p><i>Learning Modern 3D Graphics Programming</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=3294840" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=3294840</a> - Nov 2011 (51 comments)<p><i>Learning Modern 3D Graphics Programming with OpenGL 3</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=2528740" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=2528740</a> - May 2011 (16 comments)
评论 #34165870 未加载
FarhadG超过 2 年前
(Shameless Plug)<p>If you&#x27;re interested in learning about 2&#x2F;3D graphics and then applying it to build a 3D graphics engine—similar to something like THREE—check out my book: <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Real-Time-Graphics-WebGL-interactive-applications&#x2F;dp&#x2F;1788629698" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Real-Time-Graphics-WebGL-interactive-...</a>
bmitc超过 2 年前
If you were designing a new application from scratch, meant to be cross-platform on Windows, macOS, and Linux, what 2D graphics library would you use? I have been operating under the assumption that Skia is that library but would like to hear thoughts.<p>What about 3D?<p>This is all assuming one wants something packaged and does not want to write OpenGL or Vulkan code.
评论 #34168573 未加载
评论 #34167224 未加载
评论 #34179619 未加载
评论 #34167600 未加载
评论 #34167191 未加载
评论 #34167785 未加载
评论 #34166809 未加载
3tigerooozan3超过 2 年前
This vector tutorial really helped me: <a href="https:&#x2F;&#x2F;chortle.ccsu.edu&#x2F;VectorLessons&#x2F;index.html" rel="nofollow">https:&#x2F;&#x2F;chortle.ccsu.edu&#x2F;VectorLessons&#x2F;index.html</a>
keepquestioning超过 2 年前
Outdated. Learn VULKAN
评论 #34166086 未加载