はてなキーワード: OpenGLとは
自分は商用UNIXっぽいから20年近く使ってきたけどM1から完全に買う気力が失せた
その商用UNIXっぽさで国立大学とか公的な研究所でMacは導入されてきた経緯があるけど、
それはXQuartzとか前提にしている話であって、もうUbuntuもWaylandがデフォルトになる時代になってきたし、
Macはハードで強制的に対応できるOSを切り捨てるので、自分が所有するMacもOSを上げられなくなったし、
といっても、財産というか色々あるので、homebrewも対応が切れていちいちソースからビルドしろと言われるようになったけど、
まだWebとかグラフィック関係ないならコードも書けるし、テキスト周りはまだ使うけど、
でも、このへんでMacはやめてUbuntuかなあ、と思って、こうやってUbuntu使って書いてるわけだけど
Metalとかも面白そうではあるけど、もういいかなあという気がする
VAIOの偉い人が言ってたみたいに、AppleのM1みたいな試みは非常に面白いし歓迎するけど、
快適なユーザーエクスペリエンスはたった1つのチップから生み出されるわけではないので、
CPUが速いだの遅いだのも大事だけど、総合的なハードウェアの構成が快適環境に繋がるというのは同意なんだよね
そういえば、MacはOpenGLも対応しなくなったし、OpenGLの規格がクソみたいなのは理解できるけど、
MacのためにMetalに対応するより、動的にVulkanを無理矢理動かすような方法に落ち着く気もするし、
自分は不勉強なのでよく知らんのだけど、参考にしてるソースの中の1つの作者がWayland対応はやめてたなあ…
男は黙ってQtを使え、
なんだろうけど、なんかQtもなあ…、嫌なんだよなあ…、
と思いつつ、GLFWとかSDLで抽象化するのも困るみたいでX11書き始めたらハマった…
でも、GitHub漁ってると一人でX11だろうがGDI+だろうが、サクサク全対応書く人はいるんだなあ
もうWinMainだの忘れたよ…、はー
そういえば、ペゾルド本がWin32の鈍器みたいな本だった時代があったけど、
あれは良い本だけど、正直、第一章で疲れて読む気が失せたんだよなあ
ウィンドウ一枚表示するのにこんなに書くの?数行で出ないの?みたいに思いながら読むのが苦痛だった
でも、未だにQtとか使わないと、そのへんの基本設計も含めて世の中解決していないことは多いのだよなあと思ったり
OpenGL 1の時代は非力だったけど、ちょっとしたものを書くのは分かりやすかった
GLUTで対処できた時代だったからでもあるけど、やれることは今よりショボくても分かりやすかった
でも、今は乱立するバージョンとかシェーディング言語のバージョンとか、色々ハマることが多くなった気がする
Windowsだけ、Linuxだけだとしても、あらゆるグラフィクス環境に対応しなければならない
もしくはできるだけ低いバージョンに抑えるとかなんだろうけど
パソコンもスマートフォンも普段使っていて別段困る事はない。しかしながら戦術の通りプログラミングやソフトウェア、
そして最新のハードウェア等になるとまるっきりついていけない。ハードウェアはUSB-TypeCにも種類があるとか理解できない。
俺もコネクタなんて種類が多くてもう分かんないw
こういうのも技術的な意味合いのものと、商業的な大人の事情によるものが混在しているわけで
メンテナンスできないものを使い続けるというのはあんまりないはず
印刷の現場でClassic Macを使っていたり、工場でPC-9801を使っている現場は今でもあるにはあるけど、
日常でClassic MacやPC-9801を頻繁に見ることはないはず
西暦2020年にもなって、プログラミングが簡単には出来ないし、ハードウェアの規格も完全に統一はされていない。
というかプログラミング言語自体多すぎる。ソフトウェアはデファクトスタンダードのモノ程度は知っているが、
例えば、Windowsのゲームを開発するときDirectXを使うと思うのだけど、なんでマイクロソフトがわざわざDirectX作ったかというと、
商業的側面は、OpenGLとかはJISのような規格なので、マイクロソフトは口出しできない、主導権が握れない、
技術的側面は、規格の策定はビジネスのスピードより遅く、グラフィクスカードの進歩に追いつかない、OpenGLよりも先んじて先進的な技術をユーザーに提供したい、
みたいな思惑があるわけだ
この選択は正しかったと思われる、それがXBoxの開発にもつながるし、Windowsデスクトップの表現力にもつながった
言語が多くなるのは近年のCPUなどのアーキテクチャに則した言語を作りたい、
折角作り直すんだったら文法なども変えたい、みたいな考えがあると思う
フロッピーディスクなんてもう終わったのだからいい加減AドライブをSSDまたはHDDにするべきじゃないのかとすら思う。
だけどずっとCのままだ。
古いプログラムの中には「C」と決め打ちで書かれてしまっているため、Cドライブという概念をなくすとこれまでの資産が全部動かなくなる
そうすると、Windowsのような最初のHDDをCドライブと決めているOSは誰も使わなくなってしまう
俺も役所への手続きだの、これを知っているのが大人の常識だの、みんなクソ喰らえだと思っているけど、
そうしないと駄目みたいな世間の空気があるので、嫌々ググって調べたり、お役所ルールバカすぎるだろwと思ったりするけど、
ただ、コンピュータを製造するのは企業だし、そこにはビジネス的な大人の事情とか思惑が介入するわけで、
そうなると純粋な情報処理という学問を阻害されることは容易に起こるわけである
だって、自分でゼロからコンピュータやOSを作るわけにはいかないし
かと言って、企業もまったく情報処理学や数学を無視したものを製造できるはずもないわけで、
これって流行り廃れる技術なのか、少なくとも死ぬまで廃れることのない技術なのか、みたいな選定の目につながる気がする
言語も、まあ色々だけど、とりあえずCのような言語がちゃんとできればコンピュータの中が分かってないと書けないところがあるからCをやる意味はある
Linuxカーネルの一部にRustを実験的に持ち込んだりしてるみたいだけど、Cがなくなることはまだまだない、というかこれからもずっと続くと思う
なんだかんだCはRustより書きやすいと思うし、書きやすいからこそRustよりデンジャラスなのだ
Cドライブ云々は、例えばLinuxではCドライブという概念がないが、
同じコードをWindowsとLinuxで動かすなら、まずOSの種類を判定するコードを書いて、そこからパスの生成を分岐させればいい
ので、まずはTCP/IPとか喋れるようにカメレオンだったかをインストールするところからがスタートだった時期があった気がする
それは当然、箱で買ってきて中のCD-ROMからインストールするわけで、インストールすればモデム経由でtelnetやmosaicが動作するようになる
そもそも、MicrosoftはWindows 95になってもインターネットに否定的で、独自のネットワークを推していたから(Microsoft Network?
まあ、OpenGLに対してDirectX作ったのは正解だったのかもしれないけど
最近のMicrosoftは180度方向が変わったかのように、
独自Edge放棄してChromium使った方がコスト安いし車輪の再発明なんてバカバカしいよねーw
なんだったらオープンソースコミュニティに金出すよGitHubに金出すよ、
Rustいいね採用してみるよRustでWindowsデスクトップアプリとりあえず書けるようにしてみたでー
みたいに急転換してしまったが、これはこれで楽しい気もするし、
ころすきでやらないとやってもらえない
そりゃ普通そうだろ
さっしてくれ
でやらせるには 殺す気 つまり 事実上の脅迫でやらないと無理だろう
それならやってもらえる
どれだけいっても、人違いということを認める気がない
いや、書類の不備っていう単語をちゃんと前ふりしてくれるやさしい行政
ポリゴンで12面体を作れ
C++で
OpenGLなどのレンダリングエンジンから作れ OpenGLやDirectXなどを使わないことの意味
フレームバッファは使ってよく 画面サイズは1024x768 32Bitカラー アルファなしとする
簡単?難しい? わかんないよね
HTML5アプリを作りなさい ブラウザから(From Browserではなくブラウザもつくる) とか ふつう
Android携帯を 半導体をアキバでかってきてつくれ とかよりはむずかしくない
簡単っていわれちゃうと ちがうよ っていいたいけど そいつにとっては簡単なんだろうなっておもうと
優秀なやつって こまる 次元が違いすぎる
でも、みんなが、そっちがあたりまえで
Android携帯をいまどき買ってくるとか信じられない あれは作るんだよっていわれると
そうかもなぁっておもう
まつほろひとゆきが作った日本産のコンピューター言語。パールというコンピューター言語を元に作られていてWebサービスを作るためのフレームワークを搭載している。代表的なWebフレームワークはtDiary
C
デニス立地さんがNTTで開発した言語。マルチクスというOSを作成するために作られた。わざと複雑な言語仕様にすることで自分の役職ポジションを守ろうとしていたが、思った以上に世の中の人間はこの言語を使いこなしてしまい、超有名な言語になってしまった。スーファミのゲーム制作にさえ使えなほどの超高級言語
おまじないと呼ばれるプリプロセッサでの書き換えが必要な謎の文字列を埋め込む必要があったり、言語仕様に曖昧な部分も多く、同じソースなのに実行環境によって動きが異なる、欠陥言語である。(32bit向けプログラムが64bit環境で動作しないなど)
オブジェクト指向言語。すべてのオブジェクト指向言語はこいつから始まった。
主にWindows上で動作するゲームを作るための言語。今ではUnityとか色々なゲーム開発の環境とかあるが、結局はパフォーマンスとか考えたらC++使うことになる。
代表作はOpenGL、DirectX、Window10、LibreOffice など
JavaScriptから派生した言語。読み方は(ジャワ。ジャワ島のジャワ。)。もともとはOracleの創始者の博士が趣味で作成して、現在のOracleデータベースの基礎となるテクノロジー。アプレットという実行するための専用プログラムをインストールしないと、Javaで作ったプログラム(.classファイル)は動作しない。マークはコーヒーだと思われがちだが、紅茶(ジャワティー)である。
アンドロイドOSを作成するためにも使われており、アンドロイドのOSカーネルはJavaで制御されている。そのため定期的にGCが走るので、アンドロイド端末は定期的に動作を停止することがある(いわゆるプチフリーズ)。
対策するためにはGC戦略を見直してヒープ領域のサイズやメモリに乗せるキャッシュのサイズなどの調整が必要であるが、げんざいのGoogleにはこれらを調整する人員はすでにいない。
このように業務用データベースから携帯電話まで幅広く使われているので、Javaの技術があっても市場価値は殆どないと言われている。(みんな使えて当たり前)
晩年政界への進出を目論んでいた松下幸之助が、未来社会を見据えて開発した言語。主にWebアプリケーションを作成するために使われている。PはパナソニックのP。を略してPHP
かんたんにシェルコマンドを実行できたり、クエリストリングに代入した値を直接グローバルで評価できたりするなど、洗練されていてとても便利な言語である。
HTMLやメール本文の中にもPHPの処理を書き込むことができる。
この世のすべてのサーバーに実行環境が存在するので、PHPのコードさえあれば、コンパイルも不要でどのような環境でも動作する。
C言語の100倍生産性が高く、Wikipedia、Facebook、Slackなどの超一流のサイトやサービスで大量のアクセスを捌いている。
WardPressと呼ばれるフレームワーク(全世界のWebサイトの3分の1以上はWardPressで作成されている)を作成している言語であり、この言語なくして今のWebは存在していない。
データベースとも親和性がある、などと言われることもあるが特に根拠はない。
韓国人棋士を倒したAIに特化したプログラム言語。Googleが開発しており、もともとはDartという名前だったが、汚いという理由でなまえがGoに変わった。そのため現在はDartという言語は存在していない。
AIに特化しているというだけあり、低レイヤむけの実行ファイルを作成する必要があるため、コンパイルが必要ではあるが、だいたいどの環境向けのバイナリも生成することができる。
デフォルトでディープラーニングを使うための機能を持っていたり、プログラムを並列実行するための機能が備わっているので、コア数の多い環境で高速に動くプログラムを作りやすい。
JavaScript
Javaの元になったプロトタイプベースのオブジェクト指向言語。読み方はジャワエスクリプト。W3Mというブラウザの上でインタラクティブにWebサイトを動かすために作成された言語。もともとブラウザの上で動くための言語だったが、後にSafariブラウザに搭載されていたV6エンジンというJavaScript言語の実行エンジンを分離してNPMというJavaScriptを直接実行できる環境となった。
それ以降JavaScriptはブラウザ以外にVRゴーグルの中などで動くようになった。
並列プログラミングが不可能な作りのため、コールバックを多用して、スパゲッティーコードを量産することができる。
NPMを使う奴らは、JSがブラウザ環境で使われる言語であることを全然考えてないため、WebpackとかBabelといった謎の開発環境をシコシコ積み上げている。いつかその塔は爆発し崩れ去ることになるであろう。
Javaと同じくJavaScriptから派生した言語。Javaとは互換性は無いが、JavaScriptの上位互換があるため、JavaScriptのコードをそのまま実行することができる。
$マークから始まる命令のみで構成されているとても縁起のいいプログラミング言語。おもにパララックスなどを実現するために利用されていて、WardPressなどのドライバとしても使われている。
JavaScriptの改良版であり、現在JavaScriptと言われているプログラム言語の99%はjQueryのことである。そのため現在慣習的にJavaScriptと呼ばれているもののほぼ全てはjQueryである。
jQueryを覚えればJavaScriptは覚えなくても良い。などと言われるが、正確にはjQueryを覚えた頃にはJavaScriptも覚えている。というのが正確である。
JavaやjQueryなどと同じくJavaScriptから派生した言語。Microsoftが開発した関数型言語。開発時はF#(エフシャープ)というコードネームだった。
型に特化した言語であり、Microsoft製のVSCodeというIDE環境でしか開発、実行が出来ない。(ただしMacやLinux上でも動作可能)
TypeScriptを動かすにはサーバーにVSCodeもインストールする必要があり、言語やIDEのバージョンアップも多いため、メンテナスンスが困難である。
前進となるObjectiv-Cという言語が、気持ち悪い構文であったため開発者が不足しており、このままではOSのメンテナンスもままならない、という理由で最初のバージョンがわずか14日間で作られた言語。
暇だからゲーム専門学校時代を振り返る - 昆布がないと開発できない。 http://donnpema6.hatenablog.com/entry/2019/10/23/004918
HAL東京は私の母校でもある。読んでいてとても懐かしくなった。
この記事を書かれた方と同じように自分も卒業して思う事や学生時代を振り返ってみたくなったので書く。駄文ですが入学検討している高校生、在学中の方にこれからの参考になればと思う。
まずは私の情報について。
・現在は大手ITにてモバイルゲームエンジニア(Unityメイン)
まず私はゲーム業界志望で入学してゲーム業界に就職したパターンの人間である。
HAL東京でゲーム学科なんだからゲーム業界に行くのは当然ではと思われる方もいるかもしれないが残念ながら半数近く、またはそれ以上の人数がゲーム以外の業界に行く。
1年目
・冒頭で紹介した記事にもあった通り、HAL東京では前期・後期に別れて授業を行う。1年目は基礎を学ぶ。
・この基礎だが、プログラミング以外にもデザイン、コンピュータサイエンスなども行う。これは1年目の後期に改めて学科の選択の機会があるからだ。実際にプログラミングやってみて自分に合ってないと考えた人はデザインの学科にも行けるというわけだ(最も、最初の希望とは違う学科に入ってちゃんとその業界に就職した人を私は知らない)
・プログラミングの授業ではC言語を学ぶ。私は高校時代プログラミングなんて一切やっていなかったので初めて触れたのがCだった。printfでHelloWorldしたりscanfでメモリ領域ぶっ壊したりしつつもプログラミングの基礎を学ぶ。 IDEはVisualStudioだった。
・コンピュータサイエンス系の授業では、基本情報技術者試験の合格を目指し皆勉強する。HAL東京では基本情報技術者試験を取得していない場合、この授業が卒業まで続く。就職において資格を見る会社も一定数いるのでこのカリキュラムは良いと思う。取得している場合はAndroid開発やコンシューマゲーム機での開発授業などが選択できるようになっている。私は初の試験で無事合格したが卒業時でも取れてない人は一定数いた。馬鹿なんじゃないのか。
・1年目の後期からは学科に別れた授業+コンピュータサイエンス系の授業といった感じで進む。
・C言語のコンソールに文字を表示させてゲームを作るというのを1年目はやる。独自のライブラリが渡される。
・文字だけで表現するのにこの時点で出来るやつと出来ない奴がはっきりとわかる。 優秀な人間は自分でバックバッファの概念を構築したり、滑らかなアニメーションなどを実装している。凄い。当然彼らは誰もが知っているような大手ゲーム会社に今はいるはずだ。
・1年目の最後、学内での制作物の展示イベントがある。そこで作ったゲームを展示するのだ。ここで出来ていない人はおそらく翌年には退学している。私は完成はしたものの拙い出来だった。反面、負けてられないなとは思った。
2年目
・2年目からはDirectXを使用した本格的なゲーム開発の授業がスタートする。またそれと並行してコンシューマゲーム開発の授業が始まる。私の世代ではNintendoWiiだった。
・C言語の授業もC++の授業になり、クラス化などについて学ぶ。
・コンシューマ開発の授業は基本的に情報がない中やる。渡されるのはWiiの関数リファレンスの本だけ。あとは授業で教官から教えられつつ実装していく。
・DirectXでは9を使用していた。Xライブラリのようなものは一切使わず、直でDirectXを触る。描画の仕組みなども学べるのでこの授業はとてもよかった。確か前期は2Dゲーム、後期は3Dゲームだった気がする。それぞれ個人開発で1本づつ作る。私はこの時に作った3Dゲームが結構面白く出来て自信がついた。
・2年目の後期ではWiiの開発でチーム制作を行う。チームは勝手に決められるが基本的に優秀な人がリーダーになる。チームによっては崩壊しているチームやギスギスしているところもあり、プログラミングできる人と出来ない人の差が露骨に出る。何人かはここで脱落し、退学する。
3年目
・DirectXの授業は継続しておりCで作ってたものからC++で作るようになる。ここらあたりからかなり複雑なアルゴリズム(地面の起伏に応じた高度計算や正確な当たり判定の実装など)も学ぶ。
・DirectXとは違うものとして、OpenGLの授業も始まった。OpenGLとDirectXのマルチプラットフォームを目指してゲームの開発を行う。またネットワークを使ったゲームをOpenGLで開発したりもする。この授業では基本的に自分で調べて進めていく。調べる力をつける。今思うと一番エンジニアとして大切なことが学べる授業だったと思う。
・先ほど書いた、基本情報に合格していると選択授業でAndroidプログラミングなどもできる。
・就活に備えたビジネスマナーなどの授業も始まる。その日はスーツを着て通学する。私はこの時点でスーツ着て働くのは論外だと強く感じるようになった。
・3年生のビッグイベントとして10月にインターンがある。これはHALがゲーム会社やIT企業に依頼する形で生徒を会社にインターンとして参加させるというものである。当然ながらこれも出席率などに問題がある場合は参加できない。
・インターンは1ヶ月間あり、ゲームの会社にいく人もいればデバッグの会社にいく人、IT企業にいく人様々である。どこにいくかは教官が決める。私はゲーム会社だったがかなり勉強にはなったしゲーム会社で働く雰囲気というものを知れたのでよかったかなと思う。
・3年後半からはDirectXで就職作品を作り始める。就職作品とはいわゆる企業の人に見せる作品の事である。これは完全に個人で作るので人によって完成度はかなり違ってくる。中には商業作品のようなクオリティのものを完成させる人も出てくる。実力社会である。
4年目
・4年目は卒業制作展と就職活動、産学連携の三つがメインとなる。
・私は4年になる頃には就活終わっていたのだが基本的に全てにおいて就活を優先する様になる。内定出るまではスーツで通学など、それ意味あるのか?
・HALには学内企業説明会というシステムがあり、様々な会社が来校し企業の説明、特別選考の案内をしてくれる(任意参加だが就活中の人は実質強制参加である)
・4年中盤くらいにはもうほとんどの人が就活を終えているが一部の終えていない人たちは延々と説明会に参加してはエントリーシートを書いていた。大変だなぁ。このくらいの時期になるともう学内企業説明会にゲームの会社はほぼ無い。自分で動け。
・産学連携や卒業制作ではチームを組み制作するのだが使用するグラフィックライブラリなどに指定はなく、プラットフォームも自由となる。そのため、DirectXやOpenGLを学んでいても大抵のチームはUnityやUnrealEngineを使うことになる。
・4年目後半は卒業制作展にひたすら取り組む、この制作はとても私の中にも印象に残っている。正直楽しかった。好き勝手にみんなで面白いものを作れる。
さて、ここまで1〜4年の流れをざっくりと書いた。
次にHALについてよく聞く話、課題が多いという話にもついて触れておこう。
1科目年間20くらいは少なくとも出てる気がする。(規模はまちまちだが)
この課題だが課題を一定数達成(承認という)していないと科目留年となってしまう。とはいえ教官は自分がわかるまでサポートしてくれるので主体的に動けば落とすことは無いだろう。(私は4年間で1度も落とさなかった)
また出席率も見られる。確か80%切ったらアウトだった。
毎日しっかり通学して、出された課題をしっかりこなせれば基本的に力はつく様になっていたと思う。就活失敗していた人はハッキリ言ってこれが出来てない人が多かったイメージがある。
そのため1回休むだけで内容についていけなくなる恐れがある。しっかり授業は受けよう。
次に私の就活についても触れておこうと思う。
私は3年の中旬くらいから早く就活を終わらせたいと思っていた。また、コンシューマ業界は色々と魅力はあるが第一に給料が安いところが多いし働く環境として良いとも思えない面が多かったので最初の仕事はモバイルゲーム業界がいいなと思っていた。
そのため早い段階で逆求人サイトに登録したり、1on1面談イベントや勉強会などにも参加する様になった。
個人的に今思うのが3年の中旬くらいの時期から動き出せたのが一番良かったなと思っている。勉強会などで大学生で同じ様にゲーム業界目指している人たちとも多く会ったりしているうちに、自分は結構出来る方の人間なんだなと思う様になる。
正直HAL東京のカリキュラムは異常で、普通にゲーム作りたいという人はOpenGLもDirectXもやらない。直でそれらが扱える様になっているHAL生は業界的に結構貴重な人材になりうると思う。
描画の仕組みをわかった上でゲームエンジン使うのとそうじゃ無いのとでは全然違うんだなとこの時気づいた。HALの基礎から教える理念はとても大切だった。
私は趣味で別でDirectXでゲーム作ってたりもしてたので、それを企業の人に見せたりもしていた。何かしら物を作りきるという経験を何回も積んでいるHAL生の評価は高い。(ちゃんと授業出てれば1本は作りきれるはず)
何社か逆求人で声がかかり、そのうち一番気になっていた会社と話しているうちにどんどん選考が進み、特に苦戦せずに2月くらいには内定が出ていた。私の就活はかなりあっさりと終わった。
モバイルゲーム業界やIT業界は今かなり盛り上がってるのもあり年収もかなり良く、この結果にはかなり満足している。
最後に、私がHAL東京に入学して良かったかどうか、という点について触れてこの駄文を終わらせようと思う。
もともと、ゲームは作りたいと思っていたが、何から始めたらいいのかわからなかった。
そんな中、専門学校で学ぶことで0→1が出来る様になったのはやはり大きかったと思う。
一度作り方を学べばあとはそこからどんどん自分から学んでいけた。
逆に、そう言う学び方が出来ない人はやめておいた方が良いと思う。
HAL東京在学中ずっと思っていたのが、学生間のレベルの差がとても激しいのだ。 無能か出来る奴のどっちかになるのだ。
自分は積極的に学んでいける!出来る奴に絶対なってやる!と言うくらいの気合いがないとダメだと思う。
入学時にプログラミングの経験がある人も一定数いるのだが卒業する頃には自分の方が書ける様になっていたし、結局のところ本人の努力次第である。決して入ればゲーム業界にいけるとか、そんな甘い話はない。
生半可な気持ちで入学するのは出来る人たちの迷惑になるとハッキリ言っておこう。チーム制作の足手まといになってしまうだけである。