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

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

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

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

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

4719閲覧

WinAPI学習にあたって

Weapon

総合スコア106

OpenGL

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

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/02/20 10:43

実用的なDesktopアプリケーションが作ってみたいです

C/C++の基礎の本を一通り覚えDesktopアプリケーションを作ってみたいと思いました。
ネイティブなものが作りたかったのでWinAPIに手を出したのですがビジュアル的なものを扱うためにOpenGLを学習しようと思いました。勝手なイメージでDirectXよりOpenGLのほうが速いと思いOpenGLをまず勉強したいと思ったのですが(1)DirectXも勉強するべきでしょうか。
そして(2)OpenGLには様々なライブラリがありますがどれを使えばいいのでしょうか。VisualStudioでGL.hやGLU.hが入ってましたがfreeglutをよく見ます。補助ライブラリということですがネイティブな開発をするうえで純正以外のライブラリを利用するには抵抗があります。ある程度一般的なコードでかけるんでしょうか。
(3)クラシックなDesktopアプリケーションで最近廃れてきてもいますしOpenGLも含んだWinAPIを学習するための情報がMSDNだけでは十分ではありません。どこでそのような学習ができるでしょうか。リンクや書籍等教えていただきたいです。
(4)OpenGLより最近のVulkanに移行してしまったほうがVisual的な管理も並列計算的な管理も楽でしょうか。

以上(1)~(4)の質問です。初めての投稿により何か至らない点があるかもしれませんがよろしくお願いします。

補足情報(FW/ツールのバージョンなど)

開発環境

Windows10 Pro
VisualStudio2017 Community
グラフィックボード GTX1050

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

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

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

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

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

guest

回答2

0

ベストアンサー

勝手なイメージでDirectXよりOpenGLのほうが速いと思い

それは間違いです。DirectXは元々ゲーム開発も想定して作られているので、GPUの性能を最大限生かせるようなパフォーマンス重視の設計になっています。一方、OpenGLは元々クライアントサーバーシステムとして設計されており、3D描画をネットワーク通信でサーバーに処理させる、ということを想定としているので、GPUの制御方法との違いが大きく、その性能を生かし切れません。
そういう設計思想の違いから、速さを比較するならDirectX(3D)の方が「遥かに上」です。
また、表現力に関しても、DirectX(3D)は積極的に最新技術を取り入れているのに対して、OpenGLはそれを後追いする形となっているのが実情です。

OpenGLをまず勉強したいと思ったのですが(1)DirectXも勉強するべきでしょうか。

パフォーマンスの点を除外したとしても、プラットフォーム縛りのないOpenGLを学ぶことは、一般的な3D描画処理を学ぶ上で価値があると思います。また、世の中パフォーマンスよりも正確さ(精密さ)が要求される分野もあるので、そこではOpenGLの地位は当分揺るがないでしょう。
もし、Windows向けのゲームを作りたいのならDirectXを学んだ方が良いかもしれませんが、OpenGLが使えるようになれば、Direct3Dの理解もさほど難しくはないと思います。

(2)OpenGLには様々なライブラリがありますがどれを使えばいいのでしょうか。VisualStudioでGL.hやGLU.hが入ってましたがfreeglutをよく見ます。

Windows SDKには標準でOpenGLライブラリーが含まれています。それを使うためのヘッダーが<gl.h>や<glu.h>です。
OpenGLはマルチプラットフォームなAPIと謳われてはいますが、実際には、それを利用するための準備処理や画面への表示(ウィンドウ制御)など、プラットフォーム依存の部分もあります。そのため、その違いを吸収して本当の意味でのマルチプラットフォームにするためのライブラリーを利用するというのは、良い選択です。FreeGLUTをよく見るのは利用者が多いということであり、利用者が多いということは情報量も多いということなので、これから始めるに当たっては取っつきやすいのではないかと思います。
また、開発ツールに標準で付属していない外部ライブラリーを利用して開発することは「極めて一般的」であり、生産性を高めるために多くの開発者が積極的にやっています。

(3)クラシックなDesktopアプリケーションで最近廃れてきてもいますしOpenGLも含んだWinAPIを学習するための情報がMSDNだけでは十分ではありません。どこでそのような学習ができるでしょうか。リンクや書籍等教えていただきたいです。

OpenGLとWindows APIは分けて考えた方が良いです。ちゃんと学ぶには、やはり市販の入門書で体系的に勉強するのが一番でしょう。具体的な書籍名はすぐには答えられませんが、私はこの手の質問では、書店で流し読みしてみて理解できそうな本を買いましょう、と答えることにしています。私ならそうするからです。
ある程度知識を身につければ、後はネットで検索など自力できるようになります。

(4)OpenGLより最近のVulkanに移行してしまったほうがVisual的な管理も並列計算的な管理も楽でしょうか。

Vulkanは使ったことがないため正確なことは判りませんが、設計思想はDirect3Dと同じくGPUの性能を引き出すことが目的のようです。管理というのが具体的に何を指しているのか判りませんが、パフォーマンス重視ということは、おそらくOpenGLに比べると3D処理の抽象度が下がったということなので、むしろ複雑に(面倒に)なる可能性が考えられます。
業務での必要性があるのならともかく、Vulkanはまだ出たばかりで情報量も少ないでしょうから、これから3D処理を学ぼうとするにはハードルが高いように思います。

投稿2018/02/21 06:50

catsforepaw

総合スコア5938

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

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

Weapon

2018/02/21 07:16

書籍は手に取ってみたいですがWinAPIなどの書籍はなかなか見つかりませんし見つけてもCreateWindow(Win32なのかな?)やLRESULT CALLBACKがLONGとなってたりします。最近の書籍などの入手はどうすればいいでしょうか。Win32のものでも対応できますか。
catsforepaw

2018/02/21 08:04

Windows APIはかつてWin32 APIと呼ばれていたもので、64bit版のWindowsが登場してからはWindows APIと呼ぶようになったというだけなので、両者は同じものを指していると考えても差し支えありません。32bit向けと64bit向けでAPI呼び出しの書き方が変わるということはありませんし、実際、全く同じコードを32bit向けと64bit向け両方にコンパイルできます(ただし、ポインタやハンドル等のサイズの違いには注意する必要はありますが)。基本的なAPIの使い方はWindows NT時代('90年代半ば頃)から変わってはいませんよ。 ということで、「Win32」と書かれていたとしてもそのまま通用します。 とは言っても、あまり古い本だとAPIよりもツール(Visual Studio)のバージョンが古すぎて今となっては通用しないということは考えられますので、できるだけ新しい本を選びましょう。
guest

0

普段vulkanを使っている身から(3),(4)の質問に答えます。

(3)どこでそのような学習ができるでしょうか。リンクや書籍等教えていただきたいです。

自分の経験から参考書、参考サイトを上げさせてもらいます。

winAPIの参考書

猫でも分かるwindowsプログラム
APIで学ぶWindowsプログラミング

openglの参考
youtube ゲーム道館
GLUTによる「手抜き」OpenGL入門

DirectX DirectX 11 3Dプログラミング

vulkan
vulkanは、日本語のサイトは、現在まだ作られていません。が私が参考したサイトを挙げます。
Khronos ghroup youtube
ほかにもyoutubeでVulkanと検索したら、tutolialの動画が出てきますよ。

おまけ
CGに興味があるなら、GPUメーカのNvidiaが書いている
GPUgemsシリーズ, game programing gemsシリーズがおすすめです。

(4)OpenGLより最近のVulkanに移行してしまったほうがVisual的な管理も並列計算的な管理も楽でしょうか

難易度的には、WinApi < OpenGL < DirecrX < Vulkan といった順に難しくなります。
簡単ということは、簡単なほど内部的に勝手にオブジェクトファイルが作られているというわけで、
処理スピードでは、Vulkan < DirectX < OpenGL < WinApiの順に時間がかかります。

投稿2018/04/18 04:57

nakadasanda

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問