DirectXかOpenGLか
DirectXかOpenGLか
こんにちは。
自分は最近プログラミングをはじめて、C/C++の入門書は終わらせた段階です。
これからはゲーム開発をしたいなと思っています。
そこで、DirectXかOpenGLか迷っています。
自分は様々なOSで動くゲームを作りたいので、OpenGLがいいなと思っています。
どちらでもゲームは作れると聞いているので、どちらでもいいと言えばそうなのですが。
ここで質問なのですが、「ゲームを作る」ことより「プログラミング」をしたいと思っていて、
DirectXを学ぶことで得られるものとOpenGLを学ぶことで得られるものに違いはあるのでしょうか。
どちらがプログラミングの勉強に最適なのでしょうか。
答えづらい質問で申し訳ありません。
回答よろしくお願いします。
自分は最近プログラミングをはじめて、C/C++の入門書は終わらせた段階です。
これからはゲーム開発をしたいなと思っています。
そこで、DirectXかOpenGLか迷っています。
自分は様々なOSで動くゲームを作りたいので、OpenGLがいいなと思っています。
どちらでもゲームは作れると聞いているので、どちらでもいいと言えばそうなのですが。
ここで質問なのですが、「ゲームを作る」ことより「プログラミング」をしたいと思っていて、
DirectXを学ぶことで得られるものとOpenGLを学ぶことで得られるものに違いはあるのでしょうか。
どちらがプログラミングの勉強に最適なのでしょうか。
答えづらい質問で申し訳ありません。
回答よろしくお願いします。
Re: DirectXかOpenGLか
DirectX か OpenGL というのは、グラフィカルなことがやりたい、ということですかね。
mac OS X は、OpenGL のサポートをやめるようです。
できるだけ多くの機種で、となると、Unity で C# とかは、検討なされましたか ?
https://www.embarcadero.com/jp/free-tools
Embarcadero C++ Builder コミュニティ版は、無料で、一つのソースで、Windows, macOS, Android, iOS 等、開発できるといってます(自分は Windows 32/64bit 用をビルドしたことしかありません)。 ただ、日本語の情報が少ないです。
他にもマルチ OS 対応をうたうものがありますが、各 OS の長所を生かそうとすると、結局 OS 毎に #if defined(OS) 等で条件分けや、別ファイルにするとか、やっているようです。Game だとデータだけが共通で、プログラムは OS 別であることもあります。
あと、一部の Android アプリを、Windows 用の Android エミュレータ BlueStacks 上で動かすことを、公式がやっている場合がります(「シノビマスター閃乱(せんらん)かぐら NEW LINK」,「 あいりすミスティリア ! R ~少女のつむぐ夢の秘跡~」等)。
「プログラミングの勉強」は、Game である必然性はあるのですか ? Demo シーンとかは ?
グラボが GeForce RTX 2000 シリーズであれば、DirectX で、リアルタイム・レイトレーシングできます。自分は、new PC/グラボを買って、挑戦するつもりです。
mac OS X は、OpenGL のサポートをやめるようです。
できるだけ多くの機種で、となると、Unity で C# とかは、検討なされましたか ?
https://www.embarcadero.com/jp/free-tools
Embarcadero C++ Builder コミュニティ版は、無料で、一つのソースで、Windows, macOS, Android, iOS 等、開発できるといってます(自分は Windows 32/64bit 用をビルドしたことしかありません)。 ただ、日本語の情報が少ないです。
他にもマルチ OS 対応をうたうものがありますが、各 OS の長所を生かそうとすると、結局 OS 毎に #if defined(OS) 等で条件分けや、別ファイルにするとか、やっているようです。Game だとデータだけが共通で、プログラムは OS 別であることもあります。
あと、一部の Android アプリを、Windows 用の Android エミュレータ BlueStacks 上で動かすことを、公式がやっている場合がります(「シノビマスター閃乱(せんらん)かぐら NEW LINK」,「 あいりすミスティリア ! R ~少女のつむぐ夢の秘跡~」等)。
「プログラミングの勉強」は、Game である必然性はあるのですか ? Demo シーンとかは ?
グラボが GeForce RTX 2000 シリーズであれば、DirectX で、リアルタイム・レイトレーシングできます。自分は、new PC/グラボを買って、挑戦するつもりです。
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。
Re: DirectXかOpenGLか
[雑談]
あけおめ!、ことよろ!
最近はスマホ、iPadを教える事が多くPCが疎遠になっていたのですが昨年クリスマスにWindows10のPCを買ったので開発環境を整えました。
C++2008はDirectX9用に(VistaがあるのでそちらにVS2008があるのですがWindows10でも動きます)設定してあります。
http://www2.koyoen.birdview.co.jp/~abcx ... 3-p-00.PNG
Unity 2018.3.0f2--VisualStudio2017--C++2008--C++Bulder10.3--CodeBlockc17:12(gcc,g++,Fortran)
eclips2018 12 Ultimate--MinGW(gcc8.2.0,g++8.2.0)--Scratch Desktop 3.0--PowerShell 6-preview
Android Studio もいれたのでスマホを開発者向けオプションを設定してUSBでつないでる所です…
[<---雑談]
>自分は最近プログラミングをはじめて、C/C++の入門書は終わらせた段階です。
>これからはゲーム開発をしたいなと思っています。
------------------------------------------------------
>そこで、DirectXかOpenGLか迷っています。
--------------------------------------------------------
ゲーム開発ならDirectXがいいと思いますよ。圧倒的に資料・サンプルプログラムが多く
マイクロソフト製品なので一貫性があって迷いません。
Visual Studio で C++ の勉強にもなります。
DirectX9以降はC/C++の入門書C/C++の入門書は終わらせた段階
では 相当むつかしいので DXライブラリーを使いましょう。
このサイトがお勧めです。
ここ
https://dixq.net/rp2/index.html
と
https://dixq.net/g/
ここで質問もできます。
viewforum.php?f=3
質問の仕方も詳しい説明がありますよ。
rules?sid=6147f8cca0f45a1dbd5c3d77e7159d11
あけおめ!、ことよろ!
最近はスマホ、iPadを教える事が多くPCが疎遠になっていたのですが昨年クリスマスにWindows10のPCを買ったので開発環境を整えました。
C++2008はDirectX9用に(VistaがあるのでそちらにVS2008があるのですがWindows10でも動きます)設定してあります。
http://www2.koyoen.birdview.co.jp/~abcx ... 3-p-00.PNG
Unity 2018.3.0f2--VisualStudio2017--C++2008--C++Bulder10.3--CodeBlockc17:12(gcc,g++,Fortran)
eclips2018 12 Ultimate--MinGW(gcc8.2.0,g++8.2.0)--Scratch Desktop 3.0--PowerShell 6-preview
Android Studio もいれたのでスマホを開発者向けオプションを設定してUSBでつないでる所です…
[<---雑談]
>自分は最近プログラミングをはじめて、C/C++の入門書は終わらせた段階です。
>これからはゲーム開発をしたいなと思っています。
------------------------------------------------------
>そこで、DirectXかOpenGLか迷っています。
--------------------------------------------------------
ゲーム開発ならDirectXがいいと思いますよ。圧倒的に資料・サンプルプログラムが多く
マイクロソフト製品なので一貫性があって迷いません。
Visual Studio で C++ の勉強にもなります。
DirectX9以降はC/C++の入門書C/C++の入門書は終わらせた段階
では 相当むつかしいので DXライブラリーを使いましょう。
このサイトがお勧めです。
ここ
https://dixq.net/rp2/index.html
と
https://dixq.net/g/
ここで質問もできます。
viewforum.php?f=3
質問の仕方も詳しい説明がありますよ。
rules?sid=6147f8cca0f45a1dbd5c3d77e7159d11
Re: DirectXかOpenGLか
https://dixq.net/rp2/index.html
プログラムをダウンロードしと試したところ
http://www2.koyoen.birdview.co.jp/~abcx ... u2-001.PNG
のように”ソリューションの再ターゲットを行う”必要が(最新の環境では)あるようです。
http://www2.koyoen.birdview.co.jp/~abcx ... u2-002.PNG
http://www2.koyoen.birdview.co.jp/~abcx ... u2-003.PNG
プログラムをダウンロードしと試したところ
http://www2.koyoen.birdview.co.jp/~abcx ... u2-001.PNG
のように”ソリューションの再ターゲットを行う”必要が(最新の環境では)あるようです。
http://www2.koyoen.birdview.co.jp/~abcx ... u2-002.PNG
http://www2.koyoen.birdview.co.jp/~abcx ... u2-003.PNG
Re: DirectXかOpenGLか
いま手元に DXライブラリーを使った本で
http://www2.koyoen.birdview.co.jp/~abcx ... hon-2-.JPG
http://www2.koyoen.birdview.co.jp/~abcx ... MG0820.JPG
がありますよ。14歳とうたってますがどうしてなかなかむつかしいと思いますね。入門に適していると思います。
インターネットからソースなどもダウンロードできます。
http://www2.koyoen.birdview.co.jp/~abcx ... prog-1.PNG
3章のソースを実行してみました。
http://www2.koyoen.birdview.co.jp/~abcx ... prog-2.PNG
http://www2.koyoen.birdview.co.jp/~abcx ... hon-2-.JPG
http://www2.koyoen.birdview.co.jp/~abcx ... MG0820.JPG
がありますよ。14歳とうたってますがどうしてなかなかむつかしいと思いますね。入門に適していると思います。
インターネットからソースなどもダウンロードできます。
http://www2.koyoen.birdview.co.jp/~abcx ... prog-1.PNG
3章のソースを実行してみました。
http://www2.koyoen.birdview.co.jp/~abcx ... prog-2.PNG
Re: DirectXかOpenGLか
[雑談]
いま手元に 同じ著者の本で
http://www2.koyoen.birdview.co.jp/~abcx ... hon-1-.JPG
http://www2.koyoen.birdview.co.jp/~abcx ... MG0821.JPG
があります。
12歳? と思うでしょうが先月放課後の子供の遊び場を提供しているNPOで scratch2.0 で
プログラム作り、この作り方を教えてあげようといったら
”それ3年生の時に習ったよ”、”もっとすごいプログラムを作れる子がいるよ”
と言っていましたね! (つい最近 scratch 3.0 がでたのでインストールしました)
アルゴリズムの参考にはなると思います。
インターネットからソースなどもダウンロードできます。
http://www2.koyoen.birdview.co.jp/~abcx ... prog-1.PNG
5章のソースを実行してみました。
http://www2.koyoen.birdview.co.jp/~abcx ... prog-2.PNG
いま手元に 同じ著者の本で
http://www2.koyoen.birdview.co.jp/~abcx ... hon-1-.JPG
http://www2.koyoen.birdview.co.jp/~abcx ... MG0821.JPG
があります。
12歳? と思うでしょうが先月放課後の子供の遊び場を提供しているNPOで scratch2.0 で
プログラム作り、この作り方を教えてあげようといったら
”それ3年生の時に習ったよ”、”もっとすごいプログラムを作れる子がいるよ”
と言っていましたね! (つい最近 scratch 3.0 がでたのでインストールしました)
アルゴリズムの参考にはなると思います。
インターネットからソースなどもダウンロードできます。
http://www2.koyoen.birdview.co.jp/~abcx ... prog-1.PNG
5章のソースを実行してみました。
http://www2.koyoen.birdview.co.jp/~abcx ... prog-2.PNG
Re: DirectXかOpenGLか
DirectX9 をWindows10で C++ 2008 で動かす事ができます。
DirctX9 のSDK をいれます。
http://www2.koyoen.birdview.co.jp/~abcx ... 7-uuu-.PNG
DirctX9 のSDK をいれます。
http://www2.koyoen.birdview.co.jp/~abcx ... 7-uuu-.PNG
Re: DirectXかOpenGLか
OpenGLはGLUTを使えば簡単です。
http://hajimeyo-opengl.sakura.ne.jp/
http://www2.koyoen.birdview.co.jp/~abcx ... 7-vvv-.PNG
GLFWはVS2017のNuGetから設定できます。
http://hajimeyo-opengl.sakura.ne.jp/
http://www2.koyoen.birdview.co.jp/~abcx ... 7-vvv-.PNG
GLFWはVS2017のNuGetから設定できます。
Re: DirectXかOpenGLか
あたっしゅさん、Mathさん
回答ありがとうございました。
対応OSや参照資料の量など踏まえた上で、DirectXを勉強してみようとおもいます。
回答ありがとうございました。
対応OSや参照資料の量など踏まえた上で、DirectXを勉強してみようとおもいます。
Re: DirectXかOpenGLか
[参考]
書きかけていたので参考まで
OpenCVの参考サイト
https://tokoik.github.io/opengl/libglut.html
は全部動かしてみた記憶があります。そのこるはOpenGLの質問に結構答えてました。
それを IDEでなくコマンドプロンプトでやってみました。
http://www2.koyoen.birdview.co.jp/~abcx ... 01-01-.PNG
http://www2.koyoen.birdview.co.jp/~abcx ... 01-02-.PNG
http://www2.koyoen.birdview.co.jp/~abcx ... 01-99-.PNG
書きかけていたので参考まで
OpenCVの参考サイト
https://tokoik.github.io/opengl/libglut.html
は全部動かしてみた記憶があります。そのこるはOpenGLの質問に結構答えてました。
それを IDEでなくコマンドプロンプトでやってみました。
http://www2.koyoen.birdview.co.jp/~abcx ... 01-01-.PNG
http://www2.koyoen.birdview.co.jp/~abcx ... 01-02-.PNG
http://www2.koyoen.birdview.co.jp/~abcx ... 01-99-.PNG
Re: DirectXかOpenGLか
VS2017 Community で DirectX12 、DirectX11 、DirectX9 を利用するには
viewtopic.php?f=3&t=20502
の #28 ~ #31 をご覧ください。
viewtopic.php?f=3&t=20502
の #28 ~ #31 をご覧ください。
Re: DirectXかOpenGLか
[DXライブラリーのコマンドプロンプトはこのようにしてます]
https://dxlib.xsrv.jp/use/dxuse_vscom2017.html
の内容を設定しています。
http://www2.koyoen.birdview.co.jp/~abcx ... 3-abc-.jpg
/I"d:\DxLib_VC\プロジェクトに追加すべきファイル_VC用" はいまは /Ic:\dxlib に変更。
https://dxlib.xsrv.jp/use/dxuse_vscom2017.html
の内容を設定しています。
http://www2.koyoen.birdview.co.jp/~abcx ... 3-abc-.jpg
TARGETNAME=g1
C_FLAGS=/c /D "_MBCS" /MT /I"d:\DxLib_VC\プロジェクトに追加すべきファイル_VC用" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /W3
LINK_FLAGS=/SUBSYSTEM:WINDOWS /LIBPATH:"d:\DxLib_VC\プロジェクトに追加すべきファイル_VC用" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib"
ALL:
cl $(C_FLAGS) $(TARGETNAME).cpp
link /out:$(TARGETNAME).exe $(LINK_FLAGS) $(TARGETNAME).obj
$(TARGETNAME).exe
Re: DirectXかOpenGLか
[OpenGLのコマンドプロンプトはこのようにしてます]
https://qiita.com/SonoT/items/4387ec1c8d7af8979b35
より
glut-3.7.6-bin をとってくればよい。
Windows10 にはOpenGLは既にインストールされているので glut-3.7.6-bin さえあればよい。
ビルド・実行はb.batにする。
b.bat https://tokoik.github.io/opengl/libglut.html の プログラムを
main.cpp
実行する。
http://www2.koyoen.birdview.co.jp/~abcx ... -04-a-.PNG
https://qiita.com/SonoT/items/4387ec1c8d7af8979b35
より
glut-3.7.6-bin をとってくればよい。
Windows10 にはOpenGLは既にインストールされているので glut-3.7.6-bin さえあればよい。
ビルド・実行はb.batにする。
b.bat https://tokoik.github.io/opengl/libglut.html の プログラムを
main.cpp
#include "glut.h" // <GL/glut.h>
void display(void)
{
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
http://www2.koyoen.birdview.co.jp/~abcx ... -04-a-.PNG
Re: DirectXかOpenGLか
[OpenGLのコマンドプロンプト] 速習法
同様に
http://wisdom.sakura.ne.jp/system/opengl/
の例はすべて動きます。
実行する。
http://www2.koyoen.birdview.co.jp/~abcx ... -05-a-.PNG
同様に
http://wisdom.sakura.ne.jp/system/opengl/
の例はすべて動きます。
#include <windows.h>
#include <GL/gl.h>
#include "glut.h" // <GL/glut.h> このディレクトリに glut.h を置いているので
void disp( void ) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex2f(-0.9 , 0.9);
glVertex2f(-0.9 , -0.9);
glVertex2f(0.9 , 0.9);
glEnd();
glFlush();
}
int main(int argc , char ** argv) {
glutInit(&argc , argv);
glutInitWindowPosition(100 , 50);
glutInitWindowSize(500 , 500);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutCreateWindow("Kitty on your lap");
glutDisplayFunc(disp);
glutMainLoop();
return 0;
}
http://www2.koyoen.birdview.co.jp/~abcx ... -05-a-.PNG
Re: DirectXかOpenGLか
[OpenGLのコマンドプロンプト] 速習法
別に 拡張子 は .cpp でなくても .txt でも .ccc などでも OK ですよ (^^;
g.bat main.txt
実行する。
http://www2.koyoen.birdview.co.jp/~abcx ... -05-b-.PNG
別に 拡張子 は .cpp でなくても .txt でも .ccc などでも OK ですよ (^^;
g.bat main.txt
#include <windows.h>
#include <GL/gl.h>
#include "glut.h" // <GL/glut.h>
const GLfloat lightPos[] = { 3 , 0 , -2 , 0 };
const GLfloat lightCol[] = { 1 , 0 , 0 , 1 };
void disp( void ) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
glNormal3f(3 , 0 , -2);
glVertex3f(0 , -0.9 , -2);
glVertex3f(3 , -0.9 , -7);
glVertex3f(0 , 0.9 , -2);
glNormal3f(-3 , 0 , -2);
glVertex3f(0 , -0.9 , -2);
glVertex3f(-3 , -0.9 , -7);
glVertex3f(0 , 0.9 , -2);
glEnd();
glFlush();
}
int main(int argc , char ** argv) {
glutInit(&argc , argv);
glutInitWindowPosition(100 , 50);
glutInitWindowSize(400 , 300);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
glutCreateWindow("Kitty on your lap");
glutDisplayFunc(disp);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(1 , -1 , -1 , 1 , 2 , 10);
glLightfv(GL_LIGHT0 , GL_POSITION , lightPos);
glLightfv(GL_LIGHT0 , GL_DIFFUSE , lightCol);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
glutMainLoop();
return 0;
}
http://www2.koyoen.birdview.co.jp/~abcx ... -05-b-.PNG
Re: DirectXかOpenGLか
[ 分割コンパイル ]
b.bat main.txt
sub_01.txt
実行する。
http://www2.koyoen.birdview.co.jp/~abcx ... -06-a-.PNG
b.bat main.txt
#include <windows.h>
#include <GL/gl.h>
#include "glut.h" // <GL/glut.h>
void disp( void );
int main(int argc , char ** argv) {
glutInit(&argc , argv);
glutInitWindowSize(400 , 300);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutCreateWindow("Kitty on your lap");
glutDisplayFunc(disp);
glEnable(GL_LINE_SMOOTH);
glLineWidth(10);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA , GL_ONE_MINUS_SRC_ALPHA);
glutMainLoop();
return 0;
}
#include <windows.h>
#include <GL/gl.h>
void disp( void ) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex2f(-0.9 , -0.9);
glVertex2f(0.9 , 0.9);
glEnd();
glFlush();
}
http://www2.koyoen.birdview.co.jp/~abcx ... -06-a-.PNG