差分

ナビゲーションに移動 検索に移動

GLSLのversionディレクティブ一覧

2,067 バイト追加, 2019年11月5日 (火) 08:29
ページの作成:「 GLSLでは「ソースコードの1行目」に「#version」ディレクティブを記述することで、そのソースコードの構文のバージョン…」


[[GLSL]]では「[[ソースコード]]の1行目」に「#version」ディレクティブを記述することで、そのソースコードの構文のバージョンを指定する。 ちなみに「#version」2行目以降に書くとエラーになる。このため「#ifdef」で分岐はできない。

== GLSL ==
[[GLSL]]のバージョンは[[OpenGL]]のバージョンとともに上がっている。初期のころは双方のバージョンが大きく食い違い非常にわかりにくかった。OpenGL 3.3以降はOpenGLもGLSLも似たようなバージョン番号になった。

GLSLは恐ろしいことにバージョンごとの互換性がない。そもそもの構文が違うのである。しかもOpenGLはGLSLを実行時コンパイルしかできないので動かしてみるまで気が付かない(OpenGL4.6から事前コンパイルも可能になった)。[[まるでそびえ立つクソだ]]。
{| class="wikitable"
|+GLSL
!#version
!GLSL
!OpenGL
!
|-
|無指定
|1.0
|OpenGL 1.5
|
|-
|#version 110
|1.10
|2.0
|
|-
|#version 120
|1.20
|2.1
|ESSL 1.00 相当
|-
|#version 130
|1.30
|3.0
|
|-
|#version 140
|1.40
|3.1
|
|-
|#version 150
|1.50
|3.2
|
|-
|#version 330
|3.30
|3.3
|ESSL 3.00 相当
|-
|#version 400
|4.00
|4.0
|
|-
|#version 410
|4.10
|4.1
|
|-
|#version 420
|4.20
|4.2
|
|-
|#version 430
|4.30
|4.3
|
|-
|#version 440
|4.40
|4.4
|
|-
|#version 450
|4.50
|4.5
|
|-
|#version 460
|4.60
|4.6
|
|}

== ESSL (GLSL ES) ==
一方、[[OpenGL ES]]と[[WebGL]]で使用されるESSL (GLSL ES)のバージョン番号は[[OpenGL]]のグダグダっぷりを体現している。
{| class="wikitable"
|+ESSL (GLSL ES)
!
!ESSL
!OpenGL ES
!WebGL
!ベースGLSL
|-
|#version 100 es
|ESSL 1.00
|OpenGL ES 2.0
|WebGL 1.0
|GLSL 1.20
(OpenGL 2.1)
|-
|#version 300 es
|ESSL 3.00
|OpenGL ES 3.0
|WebGL 2.0
|GLSL 3.30
(OpenGL 3.3)
|}

== 関連項目[編集 | ソースを編集] ==

* [[OpenGL]]
* [[Vulkan]]
* [[SPIR-V]]
* [[SPIR-VからGLSLを生成する]]

[[特別:カテゴリ|カテゴリ]]:

* GLSL
* OpenGL
* Vulkan

案内メニュー