困った時は

当サイトのプログラムが正常に動作しない場合

まずは OpenGL とグラフィックスカードのドライバを最新のものにして下さい。
それでも解決しない場合はコメント板にて連絡を下さい。

コンソール画面を消す

#pragma comment(linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
以前のVisual Studio 2012辺りまでは、このプラグマでコンソール画面を消す事ができました。
もちろん今でも可能なのですが、現在のVisual Studio 2022ではデフォルトでプロジェクトの
プロパティ、リンカーのシステムのサブシステムの項目が『コンソール (/SUBSYSTEM:CONSOLE)』
になってしまっています。
これでは最初からプラグマコメントが入力されているので除去できません。
そこで、この項目を『設定なし』に変更してしまいましょう。
これで以前と同じように当サイトのプログラムが動作します。

(ntdll.dll)で例外がスローされました。のエラーが出る

時々デバッグ実行すると、このエラーが出る事があります。

これはntdll.dllが色々なインストーラーで上書きされて修正されていないバージョンのntdll.dllに
なっているために起きるようです。
https://www.exefiles.com/ja/dll/ntdll-dll/
こちらのページに修正方法が書かれています。が、上手く直りませんでした。
対処方法としては、コンソール画面を消すか、デバッグなしで開始をすればこのエラーは出ません。

C++/CLIが無い

Visual Studio 2022をインストールする時にC++/CLI自体はインストールされません。
C++/CLIは.NET Frameworkが無いと動作しません。
Windowsの 『スタート』メニューを選択して、『Visual Studio installer』を検索して『Visual Studio installer』を選択します。
インストールされているVisual Studioのバージョンの横にある『変更』ボタンを押します。

『個別のコンポーネント』タブを選択します。

『コンパイラー、ビルドツール、およびランタイム』まで下にスクロールし、『v143 ビルドツールのC++/CLI サポート(最新)』を選択します。

『変更』ボタンを押すと必要なファイルがダウンロードされて、Visual Studioが更新されます。
これでC++/CLIが使えるようになりました。

構文エラー:__RPC__out_xcount_part が出る

SDKのパスが追加されていないので
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include
を、プロジェクトのIncludeのディレクトリに追加するとコンパイルが通ります。

GDI+を使ったプログラムでエラーが大量に出る

objbase.h を最初にインクルードしないと
エラーが大量に出る模様です。

固定機能編:文字列描画のソースコードで C2664 'void GLFONT::DrawStringW(int,int,wchar_t *,...)':

引数 3 を 'const wchar_t [18]' から 'wchar_t *' へ変換できません。のエラーが出る

これは、C++では文字列リテラルの型はconst wchar[]で、これを実引数に使用するとconst wcharに変換され、
関数の引数がwcharだと互換性がないというものらしいです。

解決策1
メニュー プロジェクト プロパティ [C/C++]→[すべてのオプション]→[その他のオプション]に
/Zc:strictStrings-
と記入して下さい。
そのまま動きます。
これは文字列リテラル型の変換の無効化のオプションです。
メニュー プロジェクト プロパティ [C/C++]→[コマンドライン]→[追加のオプション]に記入しても動きます。

解決策2
81行目の
font->DrawStringW(10,120,L"こんにちは OpenGLの世界!!");

font->DrawStringW(10,120,(wchar_t*)L"こんにちは OpenGLの世界!!");
に変えます。

91行目の
font = new GLFONT(L"MS明朝", 24);

font = new GLFONT((wchar_t*)L"MS明朝", 24);
に変えます。
これで動きます。
型キャストです。

GUI編 :Win32API のプログラムが軒並み動かない。。。

これに関しては Win64API とWin32API で違う部分があるからです。
32ビットと64ビット両方に互換性のあるコードを作るための構文も新たに新設されました。
少しずつ64ビット版のプログラムも出して行きます。

Visual Studio 2015 にIDE(統合開発環境)が無い

Visual Studio 2013 まではIDEが付いていました。
でも、Visual Studio 2015 にはありません。。。
X64(64bit)の開発に慣れてもらうためなのか、コマンドラインの使い方を覚えてもらうためなのかはわかりませんが。。。
と、言ってもコマンドプロンプト(ターミナル)を使ってコンパイルとかしていると面倒くさいです。
やはりGUIがバッチリなIDEでプログラミングしたいですね。
という訳で、フリーの統合開発環境、 Eclipse(エクリプス)で Visual C++ をコンパイルできるようにします。

Visual Studio のダウンロードページに以前のバージョンの Visual Studio があるので、2015 を選択します。
ダウンロードの All Downloads を選択すると非表示になっていた Visual Studio Community 2015 が現れますが、
Not available(利用不可)となっています。
利用不可なのでは無く完全にありません。他の C# や Visual Basic にはあるようですが。。。

要るのかどうかわかりませんが、Visual Studio 2015 Shell(Isolated) の Japanese の DVD を選択して Download します。

ダウンロードしたファイルを右クリックしてマウントします。
今では DVD の ISO イメージを Windows 標準機能で仮想ドライブにする事ができます。
開くボタンを押して仮想 DVD ドライブの vs_isoshell.exe を実行してインストールします。

続いて、Visual C++ Build Tools for Visual Studio 2015 の Japanese の X64 の DVD を選択して Download します。
先ほどと同じように、ダウンロードした ISO イメージをマウントして開き、VisualCppBuildTools_Full を実行してインストールします。

今度は、Visual C++ Build Tools for Visual Studio 2015 の Japanese の X86 の DVD を選択して Download します。
また同じように、ダウンロードした ISO イメージをマウントして開き、VisualCppBuildTools_Full を実行してインストールします。

ここまで出来たら、仮想 DVD ドライブが増えているのでエクスプローラーの PC のデバイスとドライブにある仮想 DVD ドライブを
右クリックして取り出しを選択します。
すると仮想 DVD ドライブがアンマウントされて無くなりましたね?
同様にすべての仮想 DVD ドライブを取り出して無くします。


上記サイトから Eclipse 2023(最新)をダウンロードしてインストールします。

C/C++ の Windows X64 版の Eclipse をダウンロードしてインストールします。

初回はワークスペースの設定が出ますが、そのまま設定して起動します。
メニューのヘルプの新規ソフトウェアのインストールを選択します。

すべての使用可能なサイト を選択し、プログラミング言語のプルダウンをクリックして
C/C++ Visual C++ サポート(実験用) を選択して次へボタンを押します。

C/C++ Visual C++ Support(experimental) をインストールします。
次へボタンを押してください。

と、ここで Just JRE for IDE Packages のバージョンが低いので修復インストールが必要です。
次へボタンを押してください。

また次へボタンを押して、ソフトウェアの使用条件に同意して完了ボタンを押します。

画面下部のステータスバーにインストール状況が表示されます。

インストールが終わると IDE の再起動が要求されるので再起動します。

ここまで出来たらパス(環境変数)を設定します。

Visual C++ 2015 x64 Native Build Tools Command Prompt が Visual C++ 2015 のコンパイラです。(64bit)

だいたい、次のパスに Visual C++ 2015 x64 Native Build Tools Command Prompt.exe があると思います。
C:\Program Files (x86)\Microsoft Visual C++ Build Tools\

Visual C++ 2015 x64 Native Build Tools Command Prompt.exe をダブルクリックして起動します。

次のコマンドを入力して各環境変数を取得します。
echo %LIB%
echo %INCLUDE%
where cl
where link

それぞれの項目をマウスでクリックしながら移動するとドラッグできるので範囲コピーします。
マウスドラッグで選択範囲ができたら CtrL + C でコピーできます。

Eclipse を起動してメニューのファイル、新規、プロジェクトの順で選択します。

C/C++ の C/C++ プロジェクトを選択して次へボタンを押します。

ALL の C++ 管理ビルドを選択して次へボタンを押します。

プロジェクト名を適当に付けて空のプロジェクト、Microsoft Visual C++にして次へ、完了ボタンを押します。

メニューのプロジェクト、プロパティーを選択します。

C/C++ ビルドを展開して環境をクリック、追加ボタンを押します。

名前は LIB で値に先ほどのLIBの値をコピー&ペーストします。


OKボタンを押したらまた追加ボタンを押して、今度は名前にINCLUDEと入力して
値の所に先ほどのINCLUDEの値をコピー&ペーストします。



適用ボタンを押します。

次はC/C++ビルドの設定をクリックしてツール設定をクリックします。

Cコンパイラー(cl)のコマンドの所に先ほどのwhere clの値をコピー&ペーストします。


Linker(link)をクリックして

コマンドの所に先ほどのwhere linkの値をコピー&ペーストします。


適用して閉じるボタンを押します。

これでパスの設定が終わりました。
あとはソースファイルとかを追加したりしてビルドすれば実行ファイルが作れます。



グラフィックスカードに関して

グラフィックスカードは2023年9月現在、NVIDIA GeForceシリーズとATI RADEONシリーズ、
Intel Arcシリーズが一般向けに販売されています。

プログラミングやゲームの用途にも依りますが、2023年現在はNVIDIA GeForce GTX1660 の
性能が最低ラインかな?と思います。


こちらの記事にもありますが GeForce RTX でしか使えなかったリアルタイムレイトレーシングに
GeForce 425.31 Driver を入れる事で Geforce GTX でもリアルタイムレイトレーシングが
できるようになりました。

当サイト管理人の推奨環境は NVIDIA GeForce RTX 2060 Super 以上です。

以下は旧記事
グラフィックスカードは2013年3月現在、NVIDIA GeForceシリーズと
ATI RADEONシリーズが一般向けに販売されていますが、プログラミング用途で
使用するのであれば NVIDIA GeForce をおススメします。

というのは、GeForceで作ったプログラムがRADEONで正常に表示されないという
ケースがチラホラあるからです。

というのも、NVIDIAドライバはDirectX、OpenGLの規格外のプログラミング実装していても
大抵は普通に動いてくれるのに対し、ATI RADEONドライバはDirectX、OpenGLの規格に
厳密に準拠しすぎていて、少しでも規格から外れると正常に動作しないという感じに
なっているからです。
最終的にデバッグするにはATI RADEONで動作テストするのが良いかもしれませんが。

また、プログラミングやゲームの用途にも依りますが NVIDIA GeForce GTX660 の
性能があれば十分で、それ以上は財布の中身と相談すれば良いでしょう。


パソコン向けとワークステーション向けのグラフィックスカード

グラフィックスカードには一般向けに NVIDIA Geforce と ATI Radeon が
ありますが 3DCG、CAD向けに NVIDIA Quadro と ATI Firepro があります。

Geforce と Radeon は DirectX に最適化されていてゲームや動画再生など
一般的な使用に適しています。
対して、Quadro と Firepro は OpenGL に最適化されていて高額な3DCGソフト等で
数百~数千万ポリゴンのシーンを快適に編集できたりします。

当サイトは『OpenGLプログラミングメモ』ですが、OpenGL に最適化されている
Quadro や Firepro を使えば良いのでしょうか?

そうではありません。
Quadro や Firepro はゲームなどの一般的な用途では逆に Geforce や Radeon
よりも遅くなってしまいます。
得意分野がまるで違うという事です。

CAD や 3DCG作成で使用されるワークステーションでは Quadro や Firepro 。
ゲーム、プログラミングなどの一般的な用途のパソコンでは Geforce か Radeon
を使いましょう。





最終更新:2023年10月09日 22:46