ブログ記事56件
前回、「今年四月末に「次ネタ」として思いつき、五月から始めた【OpenGL】シリーズですが、ほぼ1か月半かかり、OpenTK導入、GLUT及びWindowsSDK、GLUT及びBCCSkeltonを経て、再度OpenTKで無事締めることが出来ました。懸案であったOpenGLの学習(と言っても「初めの一歩」程度ですが)も何とかでき、WindowsSDK、(久々の)BCCCSkelton、そして現代的なC#による夫々の、そしてそれなりの成果物も残すことが出来ました。」と書いたように、
前回予告した通り、今回は「OpenTK、再び」シリーズの最終回として、DLLに入れた基本図形(プリミティブ)6種のサンプル(注)のお披露目をします。注:前々回紹介したGLControl_BaseとGameWindow_Baseの内、後者を利用して作りました。コンパイルには(1)前回紹介したOpenTK_Primitives.csをMSCompAssの"Option"で「ライブラリー」をターゲットにしてコンパイルしてDLL(OpenTK_Primitives.dll)を作り、(2
前回予告した通り、今後はGameWindow版スケルトンを使ってGLUTでやってきたプリミティブ等を移植してみようかと思います。で、その主旨は、OpenTKにすぐ使える基本図形(プリミティブ)のライブラリーが無かったので、OpenTKの学習と動作確認用に始めたものです。現在、6つのプリミティブを作ってみました。(コードは巻末参照)これらを同じような使い方ができるよう「緩い仕様」として、(x,y,zの-1.0~1.0内に収まる既定サイズにすることは勿論)共通仕様:(1)第1引
OpenTKの手始めとして、前回触れたGameWindowとGLControlという二つのプログラミングスタイルをベースとしたスケルトンを作ってみましょう。(注)注:メインテーマであるBCCSkeltonがそうですが、私は標準の「ドンガラ(Skelton)」を作り、それに機能を実装するスタイルのプログラミングを好んでいるということでしょう。また、両者で共通するGLクラス関係のメソッドも共有化できます。繰り返しになりますが、(ウィンドウ自体にOpenTKがビルトインされた)GameWind
【OpenGL(注)】シリーズは、絵心が無く、CGに疎かった私が無謀にもOpenGLに挑戦し、(1)C#用のOpenTKの導入を行って大苦戦し、学習の必要性を感じたことから、(2)学習の必要性を感じたことから、C(++)言語用のGLUT(OpenGLユーティリティツール)をウィンドウ環境で試し、(3)次にお作法にのっとった正しい使い方で基本学習を行い、(4)「初級」の卒業試験としてBCCSkeltonを使ってデモソフト、Glut_BCCを開発した所まで来ました。注:SGI(シ
前回、前々回、前々々回と、やたらC++のコードばかりで退屈してしまったかと思いますので、今回はGlut_BCCの本来の開発趣旨(注)に沿って、BatchGoodでコンパイルしたGlut_BCCを実際に動かしてみましょう。柱:私はなんでも実験、実証したがる人間なので、OpenGLの座学では飽き足らず「実際にどう見えるのか」を併行して行わないと気が済まない、というのがこのプログラムの開発趣旨でした。まず起動時はこんな感じです。この段階ではGLUTウィンドウはまだ作られていないので、ウィ
前々回GLUTをクラス化したCGLUT.h、前回はGlut_BCCの宣言部分をカバーしましたので、今回は肝心なGlut_BCCProc.hとGlut_CBFuntion.hをザーッと解説します。(深く読むと疲れると思うので、青字当たりをザーと読み流すことをお勧めします。)【Glut_BCCProc.h】////////////////////////////////////////////Glut_BCCProc.h//Copyright(c)10/26/2021byBC
前回は、GLUTをクラス化して使用するCGLUT.hをやりました。今回からBCCSkeltonによるプログラミング部分になります。いつものことですが(と言いつつ、最近はとんとBCCSkeltonで書いていなかったのでお分かりではないかもしれませんが)、説明が簡単な順に、(1)Glut_BCC.cpp-メインのエントリーポイントがあるファイル。(2)Glut_BCC.h-ウィンドウやダイアログのクラス定義やメンバー関数の宣言があるファイル。をやって、最後に(3)Glut_BCCP
前回、「次回はGlut_BCCを作る為に必要なGLUTの機能をクラス化した"CGLUT"クラス(CGLUT.h)を解説します」などと書きましたが、実は単に関数群をクラスメンバーにした程度で「本当に必要があるの?」程度のクラスです。しかし、コーディングの効率とかの効率とか隠蔽化とかの問題ではなく、「私の学習(『フゥーン、そうなんだー』)」効果は結構ありました。要すればGLUTのお作法に沿ってコンストラクターでオブジェクトを作り(従ってその際のパラメーターを内部にメンバーとして保有します
ひょんなことからOpenGLに手を出し、C、C++でGLUTを試した後、C#のOpenTKを導入し、矢張りOpenGLの基本をGLUTで学び直そうとしたことご高承の通りです。(「【OpenGL】3DグラフィックとGLUT」シリーズ)そしてワールド、ローカルの三次元座標、ベクトル行列による座標変換、視点と視野、平行投影と透視投影を一応舐めて、立方体、正三角錐によるソリッド、ワイアー、照光、質感までやってきました。その総括として今回は本ブログの本筋であるBCCFormandBCCSkelt
OpenTKの導入から始まり、お勉強のために久々にEmbarcaderoC++コンパイラーとGLUT(freeglutですが...)でアンマネージドプログラムサンプルを通してOpenGLを学習してきましたが、今回の照光(Lighting)と質感(Material)でひとまず初級を終了したいとおもいす。(というか、私の美術能力の限界です。)前回のワイアー、ソリッドの直方体と正三角錐を交代で表示するプログラムに、今回は「ソリッド表示の際に照光効果と質感表現を確認できるようにする」というのが今
お約束したように、前回のプログラムにワイアーフレームを追加してみましょう。ソリッド画像との切り替えは’w|W'キーをトグル(押すたびに交代する)にし、's|S'キーは回転を止めて見れるようにします。(巻末の【TestGLUT003.cpp】参照)それではTestGLUT002.cppをコンパイル(注)してみましょう。注:書き忘れたかもしれませんが、ソースはTestGLUT002.cppですが、BatchGoodの"Lib"フォールダーにfreeglut.libを加えてコンパイ
前回までで3Dグラフィックスを書く準備が出来、xyz軸を使った[「お試し」も完了しました。さて、今回は前回のお約束通り、GLSamplerの正三角錐と直方体を描いてみましょう。プログラムは末尾に【TestGLUT02.cpp】として貼っておきます。(なお、今回からプログラム全てに色付けするのではなく、ハイライト部分のみを色付けするようにします。従って、色付けされていない所は既に前のプログラムで書かれているところだとご理解されてよいと思います。)前回と今回のプログラムの違いは以下の通り
さて、前回GLUTによる3Dグラフィックスを楽しむスケルトンのお話までしましたが、表示された座標に「2D疑惑」が生じました。実はあれ、(1)Z軸+(プラス)からー(マイナス)に向かって、(2)X軸Y軸共に-1から1までの直方体空間の、(3)平行投射画像(注)注:これがGLUTのデフォルト状態であると考えられます。なんです。そして、GLUTの2Dグラフィックスは、(1)3D空間のX軸、Y軸だけを使って、(2)Z座標が0の平面に表示されたグラフィックスを(3)平行投射して
前回OpenGLの3Dグラフィックスについて簡単に説明しましたが、今回からはGLUTを「仕様通りの使い方」に沿って使い、GLSamplerでつかった描画オブジェクト(プリミティブ)のサンプルも使って実際に実験しながら確かめてゆきたいと思います。先ずは毎回異なる仕様のコードを使うのではなく、今後3Dグラフィックスを作成するベースとなるGLUTの使い方を(私の得意技である)スケルトンで示し、3次元空間にx,y,zの各軸に沿った矢印を描いてみます(今回のお題)。なお、3Dグラフィックスに関わるコ
さて、前回(何も原理を理解していないのに、三次元描画をしたかったので見よう見まねで取り敢えず作った)GLSamplerで二次元サンプル、三次元サンプルをウィンドウに描画し、三次元サンプルは動かしても見ました。しかし、この段階ではまだ何がどうなっているのかを知らず、またそれほど興味もなかったのでスルーしました。が、今回の企画で「矢張り少しは3Dグラフィックスを学習し、GLUTが何をやっているか理解しよう」ということで、ウェブに転がっている(無料の有難い)参考書を(最初は訳も分からず)読
前回はC++とWin32SKDによる「ウィンドウ周り」プログラミングでした。今回はユーザーウィンドウで直接GLUTを使う際の中核となるOpenGL.hとDrawFunctions.hについて解説してみようと思います。先ずはOpenGLを専用の出力ウィンドウを使うコンソールベースではなく、ユーザーウィンドウで直接使う際のコアとなる部分をまとめたOpenGL.hです。くどいようですが、これはテスト、学習の為に調べながら書いたものであり、「OpenGLを簡単に使い、基本図形を関数で持っている
前回GLSamplerの出力を見ましたが、今回から少し解説します。前に書きましたが、OpenGLのツールキットであるGLUTは基本的な使い方の仕様があり、C言語で記述したコンソールウィンドウからグラフィック出力ウィンドウを作成し、それに出力するので、ウィンドウプログラミングに慣れた方からみると「古臭い」印象を受けます。その為、コンソールウィンドウを使わずにウィンドウからGLUTの出力を制御、ウィンドウに出力したい、と感じさせます。これについて色々と試しましたが、GLUTのビルトイン関数に
前回、GLUT(注)で当時ワイアーティーポットを表示させたかった為に作ったGLSamplerを、2Dと3Dのサンプルを入れて仕上げる話をしましたので、3Dグラフィックのお話の前に「百聞は一見に如かず」ということで、先ずは成果物をご覧に入れます。注:実際はfreeglutです。BCCFormandBCCSkeltonの"./SampleBCCSkelton/Glut_BCC/freeglut/"フォールダーに4つのヘッダーファイルと、"x86"フォールダーにビルド済のfreeglut.dll
OpenTKの導入格闘記シリーズを終え、『【OpenGL】今後の進め方-ネタの構成を考える』前々回でC#用のOpenGLライブラリー、OpenTKの導入格闘記を考えたのですが、それを書くには「3DCGやOpenGLの一定の知見」が無ければならず、そ…ameblo.jpとか『【無駄話】OpenTKはちょっと置いておいて...』本来は【OpenGL】シリーズの話題なのですが、内容がプログラミングアカデミックではないので、【無駄話】で書きます。元々この【OpenGL】シリーズは、
先ずはOpenGLの子孫の一つである、OpenTKの導入(それも最新バージョンではなく、オワコン的.NETFramework版ですが)でのトラップについて語りました。(今読み返してみると余り「何が大変?どういうトラブル?」的に軽く感じられてしまいますが、当時は、フザーっ!!!的に逆上していました。まぁ、glutやfreeglutの導入の時も結構なトラブルがありましたが...)軽い気持ちで遊んでみようと導入したまでは良かったのですが、矢張りある程度遊ぶにはOpenGLを勉
前回、OpenTKの公式サイトでフリーダウンロードを推奨している「OpenTK.dllとOpenTK.GLControl.dllのバージョン不一致エラー問題」から、(感情的に)OpenTK導入に関わる癇癪玉を破裂させたので、今回はより客観的に書きたいと思います。Windows11に同梱されているC#コンパイラー(C#5)とMSCompAssによるプログラミング環境でOpenTKを利用される方は次の手順で設定を行ってください。(1)OpenTK(Ver3.3.3)とOpenTK.G
本来は【OpenGL】シリーズの話題なのですが、内容がプログラミングアカデミックではないので、【無駄話】で書きます。元々この【OpenGL】シリーズは、C#で「OpenTKを使ってみよう!」というところから始まったのですが、やっとこさOpenTKを導入して、webにあるサンプルプログラムを動かせるようになると、余りに自分がOpenGLについて無智であることが哀しく、恥ずかしく、「少しはお勉強を...」と思い立ったのは良いのですが、OpenTKは新しいライブラリーですがWin32のglutの
前々回でC#用のOpenGLライブラリー、OpenTKの導入格闘記を考えたのですが、それを書くには「3DCGやOpenGLの一定の知見」が無ければならず、それらをwebで眺めていたらサンプルが豊富な旧いglutが面白く感じ始めて(また旧いライブラリーなのでBCCSkeltonとの相性も良く)、C++でちょっと書きたいなと心が揺れ始めたことを前回書きました。(参考:末尾<参照>)これではイカンっ!!!ということで、これらを一つのテーマに纏めてきちんと構成しよう、というのが本日の記事(
前の無駄話で、次は連載の「OpenTK格闘記」をやろう、と書きました。今回フォントを小さくし、色を薄くしたのは今の気分を表しているからです。「確かにOpenTKを導入する際にすったもんだしたし、ひどい目にあった」のですが、この「OpenTK格闘記」の本質は「導入格闘記」であり、3DCGの格闘記でも、プログラミングの格闘記でもない、というところが、気持ちの下げ要因となっているみたいです。でも、余り気にせず好きにやろうかな?というところもあり、矢張り「OpenTK格闘記」は
こんにちは。Yukiです。今回は、OpenGL(GLUT)を使ってみたいと思います。OpenGL(GLUT)とはOpenGL(OpenGraphicLibrary)とは、グラフィック関係のライブラリです。映像や画像を出力することは、かなり大変なのですが、それらを簡単に出来るようにしたライブラリです。ただ、OpenGL自体はOSに依存しにくい仕様だったのですが、それでもWindowsやLinuxなど、マウスポインタの取得方法やキーボードの取得方法などが違うため、そこら
このシリーズ物の【無駄話】は、お気楽にOpenGLの簡単なクラス化を夢見てこう始まって、ここまで来ました。より具体的に書くと、(1)Dev-C++のサンプルを解析して、WindowsでサポートするOpenGL1.1(ヘッダーファイルはBCC102の"...BCC102\include\windows\sdkGL\”にあるgl.hとglu.h)を使った2Dのグラフィックサンプルを使えるように、(Win32APIのGetDC、ReleaseDCのように)自作GetRC(Renderin
前に、既にobsolescence(陳腐化)の域に入り込んでいるともいえるOpenGLに突如関心をもった話を書きました。その理由は、単に「ブログを書くために、C++のIDEの調査の為ダウンロードしたDev-C++のサンプルにあったWin32SDKのプログラム」(↑haOpenGLのサンプルを基に自作した"GLSampler")がOpenGL(但し、そのサンプルは2Dグラフィック)だったから、なんですが。で、やろうかとおもってwebをググってゆくと、この世界はCGの世界につながって
↑のようなタイトルで釣ってしまって申し訳ありません。今年古希で現役の方のお楽しみのような話ではございません。ご存じの通り、2023年にC#を学習し、WinFormsからWPFまで来て、「(WPFで使えるコントロールを使う際等)書いて書けないことは無いけど、こりゃー、VisualStudioでないと難しいな。」という結論を得ました。しかし、「次のネタ」が思い浮かばずにPythonへ流れてゆきました。それはそれで面白いのですが、Pythonの文法や構文を書いていると、矢張り書き慣れたC
今回は「OpenGL/GLUT」で作成しました。■参考書「CGのための物理シミュレーションの基礎」下記をインストールしました。