<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Tech Blog by yosi</title><description>A blog about programming, software development, and other technical topics.</description><link>https://codelabo.com/en/</link><language>en</language><item><title>Building Draco and Compressing 3D Files</title><link>https://codelabo.com/en/posts/20200830183755/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200830183755/</guid><description>3D data files can get very large. Basically, the more polygons (vertices) there are, the larger they get. But especially on the web, large files take a long time to download, which isn&apos;t practical. So this time, we&apos;ll reduce the file size with Draco, a 3D data compression program developed by Google. Draco can make files very small. We&apos;ll actually compress an OBJ file with Draco.</description><pubDate>Mon, 31 Aug 2020 15:10:24 GMT</pubDate><category>C / C++</category><category>OpenGL</category><category>CG - Computer Graphics</category></item><item><title>Compressing glTF / GLB Files with Draco for the Web</title><link>https://codelabo.com/en/posts/20200830135244/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200830135244/</guid><description>In recent years, techniques for doing CG on the web with JavaScript have advanced greatly, and it has become possible to develop web apps that use AR, VR, and more in the browser. The problem, however, is the file size of 3D models. 3D models such as glTF are very large for the web and take a long time to download. So we&apos;ll reduce the file size by compressing them with Draco, an open-source 3D data compression method developed by Google and adopted by glTF as an extension.</description><pubDate>Fri, 31 Jul 2020 15:15:35 GMT</pubDate><category>CG - Computer Graphics</category><category>OpenGL</category><category>three.js</category></item><item><title>GLSL Shader Programming with VAOs in Python!</title><link>https://codelabo.com/en/posts/20200228182137/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200228182137/</guid><description>This time, I&apos;ll explain both VAOs and GLSL. A VAO is a feature that lets you write VBOs (Vertex Buffer Objects), which have existed since OpenGL 2.x, more concisely. Starting with 2.x, VBOs were introduced, which send vertex data to the GPU in advance before drawing. A VAO encapsulates multiple VBOs.</description><pubDate>Fri, 28 Feb 2020 18:12:34 GMT</pubDate><category>CG - Computer Graphics</category><category>OpenGL</category><category>Python</category></item><item><title>Specifying the OpenGL Version and Opening a Window with GLFW in Python</title><link>https://codelabo.com/en/posts/20200228180254/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200228180254/</guid><description>This is more groundwork, but this time we&apos;ll specify the OpenGL version and display a window. OpenGL versions are very confusing, but thankfully, recent versions have become much less so. Using GLFW in Python, we&apos;ll specify OpenGL 4.0 for the context and display a window.</description><pubDate>Fri, 28 Feb 2020 17:57:41 GMT</pubDate><category>Python</category><category>OpenGL</category><category>CG - Computer Graphics</category></item><item><title>Getting Started with OpenGL 4 in Python 3</title><link>https://codelabo.com/en/posts/20200228175104/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200228175104/</guid><description>You can use modern OpenGL in Python. I picked up my pen to share how moving that is. In this series, I&apos;ll explain modern OpenGL features such as VAOs using Python, with code, as clearly as I can. Since this is part 1, it mainly covers an introduction and setting up the environment, and at the end we&apos;ll write a program that displays the OpenGL version your PC supports. By the way, I&apos;ll use GLFW, which lets you configure things like the context, rather than GLUT.</description><pubDate>Fri, 28 Feb 2020 17:40:53 GMT</pubDate><category>Python</category><category>OpenGL</category><category>CG - Computer Graphics</category></item><item><title>Vertex Arrays and VBOs</title><link>https://codelabo.com/en/posts/20200228161552/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200228161552/</guid><description>OpenGL and GLSL provide a mechanism called VBO for sending data to the GPU more efficiently. So far, we&apos;ve been sending data to GLSL with functions such as glBegin() and glVertex3f(). As I mentioned before, glBegin() and the like have already been removed or deprecated, and drawing with them is very slow. Here we send only the vertices to GLSL as an attribute variable, but you can send normals, colors, UVs, and other data the same way. With what we&apos;ve covered so far, you should be able to write fairly efficient programs. By the way, there&apos;s also the term VAO (Vertex Array Object), which is very confusing, but it isn&apos;t another kind of VBO or an alternative to VBOs: it&apos;s a way to encapsulate VBOs.</description><pubDate>Fri, 28 Feb 2020 16:09:33 GMT</pubDate><category>C / C++</category><category>CG - Computer Graphics</category><category>OpenGL</category></item><item><title>Projection and View Transformations with GLM</title><link>https://codelabo.com/en/posts/20200228160544/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200228160544/</guid><description>When rendering with OpenGL, you use matrix calculations to move the objects being rendered and the camera. You could write the matrix calculations yourself in C++, but GLM (OpenGL Mathematics) already exists to help with them, so let&apos;s use it.</description><pubDate>Fri, 28 Feb 2020 15:54:32 GMT</pubDate><category>C / C++</category><category>OpenGL</category><category>CG - Computer Graphics</category></item><item><title>GLSL Built-in Variables and the Z-Buffer</title><link>https://codelabo.com/en/posts/20200228155013/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200228155013/</guid><description>Part 5 of OpenGL 2.1 from Scratch. I explain GLSL built-in variables and the Z-buffer, with sample code.</description><pubDate>Fri, 28 Feb 2020 15:43:10 GMT</pubDate><category>C / C++</category><category>OpenGL</category><category>CG - Computer Graphics</category></item><item><title>Getting Started with GLSL Shaders</title><link>https://codelabo.com/en/posts/20200228150223/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200228150223/</guid><description>How to render with OpenGL 2.1 and GLSL. We draw a polygon using GLSL sample code. The whole sequence of steps OpenGL goes through to draw a world is called the pipeline. The vertex shader runs once per vertex, and the fragment shader runs once per pixel.</description><pubDate>Fri, 28 Feb 2020 12:43:46 GMT</pubDate><category>C / C++</category><category>OpenGL</category><category>CG - Computer Graphics</category></item><item><title>Opening a Window with GLFW</title><link>https://codelabo.com/en/posts/20200228124232/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200228124232/</guid><description>For drawing with OpenGL, GLUT (or FreeGLUT) would be fine, but GLUT is a bit unintuitive, makes contexts harder to understand, and is no longer maintained (presumably for good reason), so I&apos;ll use GLFW. GLFW is still maintained and has more features.</description><pubDate>Fri, 28 Feb 2020 12:35:28 GMT</pubDate><category>CG - Computer Graphics</category><category>C / C++</category><category>OpenGL</category></item><item><title>Useful Basics to Know When Using OpenGL</title><link>https://codelabo.com/en/posts/20200226180416/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200226180416/</guid><description>Long explanations of history and internals would put you to sleep, so I&apos;d rather skip them, but these are the parts I stumbled over badly while teaching myself, so I think I have to explain them. I&apos;ll still do my best to keep it short. You don&apos;t need to understand everything, but it&apos;s good to know the big picture, so I&apos;ve collected it here in part 1. Skimming it the first time is fine. Your understanding of OpenGL should deepen as you move on to the later articles, so come back and read it again then.</description><pubDate>Wed, 26 Feb 2020 18:00:38 GMT</pubDate><category>C / C++</category><category>CG - Computer Graphics</category><category>OpenGL</category></item><item><title>Setting Up Visual Studio for OpenGL</title><link>https://codelabo.com/en/posts/20200226175317/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200226175317/</guid><description>In these lessons, I&apos;ll explain OpenGL so that even people touching it for the first time can follow along. The target level is someone who has written a little C. The series is about OpenGL 2.1, but I&apos;ll avoid the old features as much as possible so that what you learn is easy to apply to newer versions such as OpenGL 3.x and 4.x. Why OpenGL 2.1? Because many PCs don&apos;t support the newer versions of OpenGL. If you release software you&apos;ve made, you want as many people as possible to use it, and in those cases you often have to use an older OpenGL. For example, Clip Studio Paint, the most famous illustration software, appears to use OpenGL 2.1, and Live2D appears to use OpenGL 3.3. Even commercial software deliberately uses OpenGL versions that aren&apos;t the latest.</description><pubDate>Wed, 26 Feb 2020 17:48:42 GMT</pubDate><category>C / C++</category><category>CG - Computer Graphics</category><category>OpenGL</category></item><item><title>Installing Visual Studio Community 2017</title><link>https://codelabo.com/en/posts/20200224180513/</link><guid isPermaLink="true">https://codelabo.com/en/posts/20200224180513/</guid><description>Since I&apos;m about to write a series of tutorial articles, I figured I&apos;d take the opportunity to install the newly released Visual Studio Community 2017. It isn&apos;t difficult, but it might come in handy, so I&apos;ll walk through it as carefully as I can while keeping it brief. (In other words, a perfectly ordinary walkthrough.)</description><pubDate>Mon, 24 Feb 2020 18:02:50 GMT</pubDate><category>CG - Computer Graphics</category><category>OpenGL</category></item></channel></rss>