DirectXかOpenGLか

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
seruvo
記事: 9
登録日時: 5年前

DirectXかOpenGLか

#1

投稿記事 by seruvo » 5年前

こんにちは。

自分は最近プログラミングをはじめて、C/C++の入門書は終わらせた段階です。

これからはゲーム開発をしたいなと思っています。

そこで、DirectXかOpenGLか迷っています。

自分は様々なOSで動くゲームを作りたいので、OpenGLがいいなと思っています。

どちらでもゲームは作れると聞いているので、どちらでもいいと言えばそうなのですが。

ここで質問なのですが、「ゲームを作る」ことより「プログラミング」をしたいと思っていて、

DirectXを学ぶことで得られるものとOpenGLを学ぶことで得られるものに違いはあるのでしょうか。

どちらがプログラミングの勉強に最適なのでしょうか。

答えづらい質問で申し訳ありません。

回答よろしくお願いします。

アバター
あたっしゅ
記事: 663
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: DirectXかOpenGLか

#2

投稿記事 by あたっしゅ » 5年前

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/グラボを買って、挑戦するつもりです。
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

math

Re: DirectXかOpenGLか

#3

投稿記事 by math » 5年前

[雑談]
あけおめ!、ことよろ!

最近はスマホ、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

Math

Re: DirectXかOpenGLか

#4

投稿記事 by Math » 5年前

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

Math

Re: DirectXかOpenGLか

#5

投稿記事 by Math » 5年前

いま手元に 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

Math

Re: DirectXかOpenGLか

#6

投稿記事 by Math » 5年前

[雑談]
いま手元に 同じ著者の本で
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

Math

Re: DirectXかOpenGLか

#7

投稿記事 by Math » 5年前

DirectX9 をWindows10で   C++ 2008 で動かす事ができます。

DirctX9 のSDK をいれます。

http://www2.koyoen.birdview.co.jp/~abcx ... 7-uuu-.PNG

Math

Re: DirectXかOpenGLか

#8

投稿記事 by Math » 5年前

OpenGLはGLUTを使えば簡単です。
http://hajimeyo-opengl.sakura.ne.jp/

http://www2.koyoen.birdview.co.jp/~abcx ... 7-vvv-.PNG

GLFWはVS2017のNuGetから設定できます。

seruvo
記事: 9
登録日時: 5年前

Re: DirectXかOpenGLか

#9

投稿記事 by seruvo » 5年前

あたっしゅさん、Mathさん

回答ありがとうございました。

対応OSや参照資料の量など踏まえた上で、DirectXを勉強してみようとおもいます。

math

Re: DirectXかOpenGLか

#10

投稿記事 by math » 5年前

それが ベスト とおもいます。 頑張って楽しんでください。

Math

Re: DirectXかOpenGLか

#11

投稿記事 by Math » 5年前

[参考]

書きかけていたので参考まで

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

Math

Re: DirectXかOpenGLか

#12

投稿記事 by Math » 5年前

失礼
#11 OpenCV ---> OpenGL の間違いでした。

[参考]
ここのサンプルが全て動きます。
http://wisdom.sakura.ne.jp/system/opengl/

Math

Re: DirectXかOpenGLか

#13

投稿記事 by Math » 5年前

#7 については

viewtopic.php?f=3&t=20502&sid=c0f1dea61 ... 8851444159

の #21~#26に詳しい説明を書いたのでご覧ください。

Math

Re: DirectXかOpenGLか

#14

投稿記事 by Math » 5年前

VS2017 Community で DirectX12 、DirectX11 、DirectX9 を利用するには

viewtopic.php?f=3&t=20502

の #28 ~ #31 をご覧ください。

Math

Re: DirectXかOpenGLか

#15

投稿記事 by Math » 5年前

ここにVS2017 を使った DirectX と OpenGL の初歩の詳しい説明があります。

http://zerogram.info/?p=1832

Math

Re: DirectXかOpenGLか

#16

投稿記事 by Math » 5年前

[DXライブラリーのコマンドプロンプトはこのようにしてます]

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
	
/I"d:\DxLib_VC\プロジェクトに追加すべきファイル_VC用" はいまは /Ic:\dxlib に変更。

Math

Re: DirectXかOpenGLか

#17

投稿記事 by Math » 5年前

[OpenGLのコマンドプロンプトはこのようにしてます]

https://qiita.com/SonoT/items/4387ec1c8d7af8979b35
より
glut-3.7.6-bin をとってくればよい。

Windows10 にはOpenGLは既にインストールされているので glut-3.7.6-bin さえあればよい。

ビルド・実行はb.batにする。

b.bat

コード:

cl /TP main.cpp

main.exe

pause
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

Math

Re: DirectXかOpenGLか

#18

投稿記事 by Math » 5年前

[OpenGLのコマンドプロンプト] 速習法

同様に
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

Math

Re: DirectXかOpenGLか

#19

投稿記事 by Math » 5年前

[OpenGLのコマンドプロンプト] 速習法

別に 拡張子 は .cpp でなくても .txt でも .ccc などでも OK ですよ (^^;

g.bat

コード:

cl /TP main.txt

main.exe

pause

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

Math

Re: DirectXかOpenGLか

#20

投稿記事 by Math » 5年前

[ 分割コンパイル ]

b.bat

コード:

cl /TP main.txt sub_01.txt

main.exe

pause
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;
}
sub_01.txt

コード:

#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

返信

“C言語何でも質問掲示板” へ戻る