質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

Q&A

2回答

812閲覧

【追記変更あり】opengl1.1からopenGL4.6に移行する方法を伺いたい

moitaro123

総合スコア7

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

0グッド

0クリップ

投稿2025/03/23 08:01

編集2025/03/31 09:09

実現したいこと

お世話になっております。
今visual studio2022ぐらいのc++でopenGL1.1で動かしているプロジェクトが
あり流石に古すぎるので
openGL4.6ぐらいの最新バージョンに対応させようとしております。

openGLの後継があるのも
バージョンの調査に何かソフト入れないといけないのも知っております。

openGLのバージョンアップする記事が記載されているwebページなどご存知ありませんでしょうか?
当方directX8.0だったらバリバリ使える感じですがopenGLは全く使ったことが無くて勉強中です。

お忙しいところ大変申し訳ありませんが
何か情報をお教えいただきますようお願いいたします。

発生している問題・分からないこと

openGL1.1から
4.6に上げた際にやる事がわからない

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

それっぽい記事見つけることが出来ませんでした。

補足

特になし

【追記ここから】
今使っているバージョンを知りたくて
const glubyte* pgl=glgetstring(GL_VERSION)
として上記を表示したところ
4.6だったのです。
ですが使っている命令が1.1だったので
命令を4.6にしたいと思っているので
対応表などありかをご存知な方はお教えいただきたいです。

それと4.6のインストーラーが複数あって
どれを使えば良いのかご存知な方がいらっしゃいましたらお教えいただきますとありがたいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

katsuko

2025/03/25 00:00

何らかのライブラリを使用していると思いますが、その場合にはそのライブラリがOpenGL4.6に対応している必要があるかもしれませんので、調べてみてください。 (わからなければ、質問に追記してください) ちなみに、よく使われるGLEWであれば、2.1.0であれば対応しているそうです。 https://glew.sourceforge.net/
moitaro123

2025/03/25 00:22

katsuko様 コメントありがとうございますm(_ _)m ライブラリは使用せずに自前でラッパークラスを 作成していたのですが この度私が移植作業をやる羽目になって情報収集をしているのですσ(^_^;)
moitaro123

2025/04/01 05:10

なんかopenGL4.6のインストーラーは opengl.jp.download.it からインストールして良いのでしょうか?
moitaro123

2025/04/02 00:04

だめでした。 git clone https://github.com/microsoft/vcpkg.git C:\vcpkg cd C:\vcpkg .\bootstrap-vcpkg.bat C:\vcpkg\vcpkg install glfw3:x64-windows glew:x64-windows glm:x64-windows C:\vcpkg\vcpkg integrate install で出来たと思います〜
fana

2025/04/02 01:50 編集

> 使っている命令が1.1だったので それは「固定パイプライン」とか呼ばれていたものでしょうか? だとしたら……現代のOpenGLだと「シェーダとかを自前で全部実装しろ」という方向性みたいなので,OpenGL使用箇所はまるごと全部作り直しなレベルになるのではないでしょうか. (最近のに詳しくないですが,今でもGLSLとかいう専用の言語で「やったー! Phong のモデルできたよー!!」みたいなレベルのところから自前で実装しなきゃならんのかな?)
katsuko

2025/04/02 12:13

「だめ」なのか「出来た」のか、先のコメントだとわかりづらいのですが、だめであればどのような問題が出たのか、書いた方がいいと思います。 ちなみに、私はvcpkgは使ったことがないので答えられないと思いますが、vcpkgを使わない方法であれば、こちらが参考になると思いますので、もしだめな場合は試してみてはいかがでしょうか。 https://matcha-choco010.net/2020/03/29/opengl-glfw-window/ vs2019と古いですが、設定はあまり変わらないと思います。
guest

回答2

0

一応確認ですが、作ろうとしているのはWindowsのプログラムで間違いないですか?
そして、OpenGL3.0で動いていたプログラムもWindowsですか?
「移植」というのは、別のプラットフォームで動作するようにすることを指すことが多いので、「もしかして?」と感じましたが、一応上記のことを前提としてお話します。

ライブラリは使用せずに

つまり、こういうことですか?

流石にWGLすら使っていないということはないと思いますが、もしそれすら使っていないというのであれば、もう手元のソースコードを見てくださいとしか言えません。

最初からするのであれば、最初のサイトからの引用をすると、

  1. OS と OpenGL のやりとりは WGL が行う。
  2. Windows SDK には OpenGL 1.1 のヘッダ&lib のみ。最小限。
  3. 新しい OpenGL に対応している GPU ライバをインストールする。
  4. ヘッダファイルは OpenGL Registry からダウンロードできる。
  5. wglGetProcAddress() を使って自分で最新の API を取得する。

ですが、すでにOpenGL3.0向けに行っているのであれば、4/5だけでいいと思います。
rubyで5の処理をするスクリプトを作っているサイトも見つけました。

ただ、やっぱりglewなどのライブラリを使用した方が楽です。
前任者がなぜ使わなかったのか、ライセンスの問題なのかわかりませんが、一応検討したほうがいいのではないでしょうか。

また、GLSL(シェーダ)のバージョンも4.6にする必要があります。
OpenGL3.0のGLSL1.3とどれぐらい違いがあるかは、私はわかりません。


あと、本当にOpenGL4.6を使う必要があるのか、よく考えたほうがいいと思います。
OpenGL4.6の新機能を使うには、それ用にコードを書かなければなりません。
「移植」というからには、そこまでの必要性はなく、手間もかけられないのではないですか。
(OpenGLは、DirectXと違って古いコードも動作しますよ)

投稿2025/03/25 13:29

katsuko

総合スコア3578

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moitaro123

2025/03/31 00:08

katsuko様 コメントありがとうございますm(_ _)m 前提から間違っていました。申し訳ございません。 openGL1.1から4.6に上げたいのでした。 なんか昔のvisual studioでは デフォルトで1.1が使われていたらしく 流石に重いので高速化のため 4.6にしたいのです。 もう少し調べてみますm(_ _)m コメントありがとうございました
katsuko

2025/03/31 12:35 編集

> なんか昔のvisual studioでは > デフォルトで1.1が使われていたらしく おそらくwglのことを言っていると思いますが、それは、今も変わりません。 そして、2.0以降の機能を使うのであれば、私の回答通りです。 > 流石に重いので高速化のため > 4.6にしたいのです。 流石に1.1であればVBOなど使っていないと思うので、それらの機能を使えば高速化が望めるかもしれませんが、その代わりほぼ作り直しを覚悟された方がいいかと思います。
guest

0

自分も詳しくはない(各 OpenGL のバージョンで三角形を試した程度)ですが、主な対応としては

  • 使用するOpenGLのバージョンの指定を3.0→4.6に変更
  • 廃止された機能を新しい機能を使うように修正

といったところではないでしょうか。

廃止された機能修正後の手法(OpenGL 4.6推奨)
glBegin, glEnd, glVertex 等のImmediateモード頂点バッファ(VBO)、頂点配列オブジェクト(VAO)に置換
glMatrix系 (glTranslate, glRotate等)GLMなどの数学ライブラリを用い、自前で行列管理
固定機能ライティングGLSLシェーダによるライティング
固定機能テクスチャ(glTexEnv等)GLSLシェーダのsampler2Dを利用

あとは、最近の AI はグラフィックスライブラリについて、それなりに学習しているようなので、AI に聞いてみるのも良いかと思います。
https://chatgpt.com/share/67dfca56-bb74-8012-b5a2-6a5c37b8c8b6

投稿2025/03/23 08:49

cx20

総合スコア4693

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moitaro123

2025/03/24 00:01

ありがとうございますm(_ _)m chatGTPは凄いですネッ 参考にさせて頂きますm(_ _)m
moitaro123

2025/03/24 08:29

なおopenGL extension viewerによると openGL4.6でした。 これってosなのかな? もう少し調べてみます〜
cx20

2025/03/24 15:59

利用可能なOpenGLのバージョンは主に下記2つによって決まります。 ・GPUのハードウェアがサポートしているか? ・GPUのドライバがサポートしているか? Wikipedia 情報ですが、概ね2010年以降の GPU であれば OpenGL 4.6 に対応してそうです。 ■ NVIDIA GeForce の場合 https://ja.wikipedia.org/wiki/NVIDIA_GeForce ■ AMD Radeon の場合 https://ja.wikipedia.org/wiki/AMD_Radeon
moitaro123

2025/03/25 00:29

cx20様 コメントありがとうございますm(_ _)m openGL extension viewerはopenGLの何に対応出来るかの結果を返すだけっぽいですネσ(^_^;) 今のソースはけっこう古いので 多分openGL3.0でラッパークラスを作ったのだと思うのでそこを確定させたかったのです。゚(゚´ω`゚)゚。 もう少しこちらにあるラッパークラス確認してみます。 コメントありがとうございましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問