[OpenGL] SOIL(シンプルなopenglイメージギャラリー)



Soil



この記事は学びます: https://www.cnblogs.com/evilkant/p/5947682.html

I.はじめに



SOILは、最も一般的な画像形式をサポートし、使いやすいシンプルなOpenGL画像ギャラリー(Simple OpenGL Image Library)の頭字語です。そのソースコードは公式ウェブサイトからダウンロードできます: http://www.lonesock.net/soil.html

第二に、構成



libフォルダーとフォルダーprojectssrcフォルダーを含むzipファイルを自宅からダウンロードできます。 SOILライブラリを構成するための3つのオプションがあります。

  1. libフォルダーは静的ライブラリファイル(静的ライブラリファイル)であるlibSOIL.aファイルであり、srcフォルダーはSOIL.hファイルであり、プロジェクトフォルダーに配置するだけで、ソースファイルにそれが含まれます。 。

それは静的ライブラリファイルとは何ですか、ライブラリは最初にそれを言いました、いわゆるライブラリは、本質的に、実行可能なバイナリコードのいくつかの形式であり、オペレーティングシステムは実行するためにメモリにロードすることができます。ライブラリはさらに静的リンクライブラリと動的リンクライブラリ(dll)に分けることができ、静的ライブラリはコンパイル時にオブジェクトコードにリンクされ、動的ロードライブラリはプログラムの実行中にのみ存在していました。



2. libSOIL.aが不可能な場合は、独自のソリューションプロジェクトフォルダーのインナーチューブを使用してライブラリファイルを生成できます。ソリューションでVC8を選択することをお勧めします(VC9には問題があるようです)。プロジェクトファイルを開き、VC8フォルダーに戻ると、デバッグフォルダーに複数のフォルダーがあります。操作後に必要なSOIL.libファイルが表示されます。1つは同じです。

3. 2番目のステップでは、プロジェクトフォルダーのmakefileフォルダー、新しい 'obj'フォルダーを開き、ターミナルを開きます-$ cmake ..- $ make -j、libSOIL.aファイルのフォルダーlibファイルを更新して、 obj内の一連の中間.oファイル、実行-$ install copylibSOIL.aファイルを現在のファイルからシステムディレクトリにコピーします。makefile.txtを参照してください。

第三に、使用

#include

..。

glGenTextures(1, &tex) glBindTexture(GL_TEXTURE_2D, tex) // Create two int values ​​for storing width height int width, height / * Function first need to enter the path to the image file. Int then require two pointers as the second and third parameters, SOIL returns an image width, respectively, And height therein. Later we'll width and height of the image at the time of generating textures. The fourth parameter specifies the picture of the channel (Channel) number Amount, but here we just left 0. The last parameter tells how to load pictures SOIL: We are only concerned with the RGB values ​​of the picture. The results will be stored as A great char / byte array. * / unsigned char* image = SOIL_load_image(path.c_str(), &width, &height, 0, SOIL_LOAD_RGBA) glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image) glGenerateMipmap(GL_TEXTURE_2D) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER) // After generating the corresponding multi-level texture and texture further away, the release of an image memory and texture object unbundling SOIL_free_image_data(image) glBindTexture(GL_TEXTURE_2D, 0)