タグ

OpenGLに関するdelegateのブックマーク (61)

  • MFCによるOpenGLプログラミング

    Home[English] Home[Japanese] 小田研究室ホーム [学科 Home] MFCによるOpenGLプログラミング (Visual C++を利用) OpenGLを利用した簡単な3次元オブジェクトの描画を行うプログラム例を 紹介します。MFCとは, Microsoft Foundation Class ライブラリのことで、 C++言語でのWindows GUIを用いたプログラムが簡単に作成できるように Microsoftが提供しているライブラリ群のことである。Window作成やダイアログの作成が 簡単に実現できる。 [このページの内容] 1.Visual C++の起動 2.必要最低限の雛型を作ってみる。 3.ビルド。 [次のページ]実際に3Dオブジェクトを描画してみる. 1.Visual C++の起動 ファイルメニューの新規作成を選択。 プロジェクトタブのMFC AppW

  • ウインドウを作らずにOpenGLでレンダリングする方法

    とある事情で、OpenGLを使ったオフスクリーンレンダリング(ウインドウではなくメモリ上への描画)の方法を調べていたのですが、OpenGLに関するネット上のサンプルはfreeglutなどの補助ライブラリを使う方法ばかり…。 freeglutは初期化の時点でウインドウの作成が必須になるので、いわゆる「オンスクリーンレンダリング」となってしまい目的に合いません。まぁ、グラフィックライブラリだからウインドウがある前提なのは当たり前なのですが…(´・ω・) あれやこれやと苦労した結果、ようやくウインドウを作らずにレンダリングする方法が分かったので、サンプルコードとして残しておこうと思います。 作成したサンプルコード以下が作成したサンプルコードです。VisualStudio2017上で作ったものですが、おそらく古いバーションでも動くかと思います。 一部でOpenCVの関数を叩いていますが、これはレン

    ウインドウを作らずにOpenGLでレンダリングする方法
  • T.Teranishi:OpenGL:version

    OpenGL は、かつては上位互換のライブラリでした。 OpenGL 3.0 までは、以前のバージョンに含まれる標準機能は、以降のバージョンで使用可能です。 例えば、OpenGL 1.1 の頂点配列機能は、OpenGL 1.2 以降でも使用できます。 つまり、このことは OpenGL 2.X は、OpenGL 1.X の機能を全て含むことを意味しています。 OpenGL 1.2 以降では、ARB_imaging サブセットがオプションで使用できる環境もあります。 永らく上位互換を維持してきた OpenGL ですが、 肥大化した OpenGL の仕様をシェイプアップするために、 OpenGL 3.0 では過去のバージョンとの互換性に関して見直しが行われ、 将来削除が予定される非推奨機能がまとめられました。 これらは冗長なものであったり、シェーダで置き換え可能な機能です。 OpenGL 3.1

  • ModernなOpenGLを書きましょう

    どうも、チョコです。 最近いろいろあってOpenGLについて調べた結果、その知見を共有したいと思います。 OpenGLは近年(最近とは言っていない)programmable pipeline(つまりシェーダが書ける)を導入し、v3.0以降にはfixed function(シェーダが書けない)関数をdeprecateしました。しかし、OpenGL context(初期化)を作るときにcoreじゃなくてcompatibleにすると古い関数はまだ使えます。これは落とし穴です。 なぜかというと、プラットフォーム(やハードウェア)によって動かなくなるからです。 Windows(OpenGL 4.5) ではうまく動いたり、 Android(OpenGL ES 3.0) では半分動いたり、 VM上のUbuntu(OpenGL 3.3) では全然動かなかったりします。<いまここ なんでこんなつらい目に合っ

    ModernなOpenGLを書きましょう
  • 【Rust備忘録】意味不明な記法の覚え書き:その1

    RustでSDLとOpenGLのコードを書いているとあんまり見たことのないような 書き方をする箇所がちらほらありました。 Rust特有の書き方なんだと思うので こういう意味不明な部分が出てきたらしっかりと調べようと思います。 C++だと歴史があるので最近の言語にも同じような書き方があったりとかで 大体なにしているかわかるのですが、Rustの場合は新しすぎてよくわからない記法が多く感じます。 #[allow(dead_code)] OpenGLのコードを写経してると出てきた意味不明なコードです。 どうやらリファレンスを眺めているとRustのコンパイラには 「dead_code」というリント機能があるらしく、使用されていない関数が存在するときに 警告を出すようでその機能を無効化するためのものらしいです。 Rustとしては使用されていないコードは書くべきではないということらしいので あんまり褒め

    【Rust備忘録】意味不明な記法の覚え書き:その1
  • OpenGLプログラミング - Wikibooks

    OpenGL Programming ブックへようこそ。 OpenGL は 3D グラフィックスの描画に使用するAPIです。 OpenGL はプログラミング言語ではありません。 OpenGL アプリケーションは、一般的に、C言語またはC++で書かれます。 OpenGL の役割は、魅力的で、リアルな3Dグラフィックスを、最小限の労力で描画できるようにすることです。 APIは通常、GPUと連携をとってハードウェア アクセラレーション レンダリングを実現するために使用されます。 このwikibookへの 参加 や 貢献 は自由で、 奨励されています: フリードキュメンテーションの精神で書かれていて、全人類に帰属するものです。 気軽に印刷したり、学校やプロフェッショナルクラスに教えたり、テキストを改善し、コメントを書き、新しいセクションを執筆してください。 私たちは貢献者を探しています。 Open

  • OpenGL ES入門 その1 -描画の仕組みとバッファ- - A Day In The Life

    最近 Cocos2d-x を触っているとどうしても細かいところで OpenGL の知識がないと理解できないみたいなことが多いです。いままで避けてきた感がある OpenGL の勉強をそろそろ始めてみようかなと思い少しづつ日記的にまとめていこうと思います。OpenGL と言っても自分はモバイルゲームの開発に興味があるので OpenGL ES について勉強していくことにしました。参考図書として購入したはこちらです。 わりと新しく出たってのと解説がものすごくわかりやすかったので選びました。第1回は OpenGL ES の基的なところから画面を色で塗りつぶすまで解説します。 OpenGL ES って何? OpenGL は三角形以下(三角形、線、点)の図形を3D空間に高速に描画するための API です。Ope GL ES(OpenGL for Embedded Systems) は主にモバイル端

    OpenGL ES入門 その1 -描画の仕組みとバッファ- - A Day In The Life
  • OpenGLについてしらべてみた - Qiita

    OpoenGL5年ぶりくらいなんで思い出す作業も兼ねてここに記しておこうかと思う。思うだけ。 この記事の続き物みたいなものなんでSDLを使用する。 調べたこと OpenGLについての勘違い 自分は今まで、世にあるグラフィックボードをOpenGL側がサポートして描画のあれこれを管理していると思っていた。 しかし、実際にはOpenGL側が定めた仕様に対してハードウェア側が対応するというかたちになっているらしい 一応覚えておいて損はないと思うのでφ(..)メモメモ OpenGLのプロファイルについて 参考URL OpenGL Context OpenGLは3.0まで下位互換があったらしい。 OpenGL1.1の環境で2.1の実装コードを動かしても問題なく動作するが、3.1以降は機能の廃止という概念が存在し、一部機能が廃止された。 Profileを指定することによって3.1以降でも廃止された機能使

    OpenGLについてしらべてみた - Qiita
  • HOME · OpenGL Course (JP)

  • 【C++/OpenGL】NO.1 OpenGLの仕組みと三角形表示 - とある科学の備忘録

    OpenGLとは OpenGLの仕組み(適当に解説) VBOとVAO 頂点シェーダ(Vertex Shader) フラグメントシェーダ(Fragment Shader) ラスタライズ スワップバッファ 深度バッファ OpenGLの座標の考え方 ViewPortとシザー矩形 GLSLとは プログラム 実行結果 OpenGLとは クロノス・グループ (英: Khronos Group) が策定している、グラフィックスハードウェア向けの2次元/3次元コンピュータグラフィックスライブラリである (https://ja.wikipedia.org/wiki/OpenGLより) 「3次元コンピュータグラフィックスライブラリ」としては、OpenGLのほかにも、DirectXやVulkanなどもありますが、このシリーズではOpenGLの使い方的なものを書いていきます。 DirectXやVulkanもチャレ

    【C++/OpenGL】NO.1 OpenGLの仕組みと三角形表示 - とある科学の備忘録
  • OpenGL が世界を描画する仕組み · けんごのお屋敷

    OpenGL 基礎シリーズの第 1 回です。 ビューイングパイプライン OpenGL が世界を描画するっていうタイトルだけでワクワクするなら、あなたはもう OpenGL の、いや、このブログの虜です。というのはおいといて、OpenGL で描画すると一言で言ってもその描画フローの中には大量の計算処理が含まれおり、そのフローをひと通り全て通り超えてこそ初めて画面に何か描画される。いわゆるパイプラインと呼ばれる処理の流れがあり、それはおおまかには以下のようになっている。細かくは他にもやってることはあるし厳密には実際と異なる部分もあるけど、これくらい抑えておけば基はわかると思う。 ちなみに赤い部分は自分でプログラミングする必要がある。青い部分は設定値さえこちらから与えてやれば後は OpenGL が内部でよろしくやってくれる。 ふー、ただ単に 1 枚の画像を描画するだけでもこれだけのフローがあって

  • OpenGLで立方体を作る

    OpenGLシリーズの第3弾、今回は立方体を描画する方法です。 よろしければ以前の記事も併せて読んでいただけると分かりやすいかと思います。 開発環境構築 三角形描画 立方体描画 ←ここ 前回と同様に、詳細なソースコードの説明はせず、立方体を描くことに注目して解説します。詳細な内容については、都度紹介しているリンク先を参照していただけると幸いです。 OpenGL Mathematic (GLM) 今回は新たにglmというライブラリを追加します。 名前の通り、このライブラリは数学的な計算を行うための機能が詰まったライブラリです。 3D空間を2次元のディスプレイ上に描画するには、さまざまな行列計算が必要になります。煩わしい計算はこのライブラリに任せてしまいましょう。 また、このライブラリはヘッダーオンリーなので手軽に使えます。 ↓こちらからglm-x.x.x.x.zipをダウンロード 展開したフ

    OpenGLで立方体を作る
  • Visual StudioでOpenGLを使うための準備 - CodeLabo

    このレッスンでは初めてOpenGLを触るという人にもわかりやすく解説していくつもりです。レベルとしては簡単にC言語を触ったことがあるような人を対象としています。 OpenGL2.1としていますが、古い機能はあまり使わずに、OpenGL3.xやOpenGL4.xなど新しいOpenGLのバージョンにも応用しやすいようにするつもりです。 どうしてわざわざOpenGL2.1で解説するのかというと、新しいバージョンのOpenGLは対応していないパソコンも多くあることになります。 もし、作ったソフトなどを公開するならばたくさんの人に使ってほしいものです。 そういった場合に古いOpenGLを使わなければならないってことが往々にしてあるからです。 例えば、もっとも有名なイラストソフトClipStudioはOpenGL2.1、他にもLive2dというソフトはOpenGL3.3を使っていると考えられます。 こ

  • VisualStuidoでOpenGLする。 - Qiita

    VisualStudioでOpenGLを始めたい人向けのメモみたいなものです。 環境作成とウィンドウを表示をしてから簡単な図形を表示するところまでやっています。 Unity? 知らない子ですね 環境 Windows 10 Visual Stuido 2017 Python 2.7 プロジェクト作成 とりあえずまず、プロジェクトを作成しておきます。 VisualStudioでVC++の空のプロジェクトを作っておきましょう。 ファイルのダウンロード NuGetを使おうと思ったんですが、なぜかGLFWをNuGetで追加しても参照が追加されなかったので普通にダウンロードしていきます。 ・GLFWの追加 まず、GLFWのサイトから「32-bit Windows Binaries」をダウンロードします。 これを解凍すると のようになるので、 プロパティのVC++ディレクトリから インクルードディレクト

    VisualStuidoでOpenGLする。 - Qiita
  • モデルビューワを作る(OpenGL+MFC) (Visual C++ 2015版)

    OpenGLとMFCのDoc/Viewアーキテクチャーを用いて再利用可能なOpenGLビュークラスを作成し、作成したOpenGLビュークラスを用いてモデルビューワを作成する方法を解説します。 使用開発環境はVisual C++ 2015です。 (使用開発環境が Visual C++ 2005 の モデル ビューワ を作る(OpenGL+MFC) (Visual C++ 2005版) もあります。 OpenGLとWindowsAPIを用いた モデル ビューワ を作る(OpenGL+WindowsAPI) (Visual C++ 2008版) もあります。 Direct3DとWindowsAPIを用いた モデル ビューワ を作る(Direct3D+WindowsAPI) (Visual C++ 2008版) もあります。)

  • OpenGL でデュアルディスプレイのフルスクリーン

    なかなかやっている人も少ない OpenGL のフルスクリーンの話になります。さらにそれのデュアルディスプレイ版となるとほぼ皆無といっていい内容かと思います。ちなみに先日の Windows 10 では使えるのか?と試した話の延長です。 OpenGL では DirectX とは違い、それぞれの画面で OpenGL のコンテキストを作り、必要に応じてリソースを共有できるようにします。あとはコレを wglMakeCurrent で切り替えつつ描画を行う、といった感じで処理するので、別段難しいことはここにはないです。 フルスクリーン化するAPIは OpenGL にはないため、 Windows API で最前面で全画面をおおうウィンドウを作ります。 最大の問題点 OpenGL APIでフルスクリーン化する機能を備えていないため、 Windows API で何とかする感じになっています。つまりは Ope

    OpenGL でデュアルディスプレイのフルスクリーン
  • VisualStudio2022で始める3Dプログラミング / OpenGL / Windows10|zerogram

    ※ブログで公開していた記事の抜粋(OpenGL)です。 WindowsC++で3DプログラミングするならDirectXかOpenGLだと思いますが、最新バージョン(DirextX12など)は、性能重視のため手軽にプログラミングができなくなっています。 なので古いバージョンで使えるものを調べて、プログラミングができる環境を作ってみました。 作成した環境は、OpenGL1.1、OpenGL4.5、DirectX9、DirectX11、DirectX12で、初期化と画面クリア、簡単なポリゴンの描画まで行っています。 VSプロジェクト、ソースコードを公開していますので、3Dプログラミングの参考にしてください。 記事最後にあるダウンロードボタンから取得できます。 Visual Studio 2022インストール特に説明は不要だと思います。OpenGLなのでC++がビルドできるようにしてください。グ

    VisualStudio2022で始める3Dプログラミング / OpenGL / Windows10|zerogram
  • OpenGLに入門する前に知っておきたかったこと - かみのメモ

    はじめに 最近、とある事情でOpenGL+GLSLの勉強をしていました。 目標はシェーダーを自分で書いて簡単な光路追跡法(レイトレーシング)っぽい処理を実装することだったので、とりあえずネットの情報と↓のを使って勉強してみました。 OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング- 作者:David Wolff発売日: 2012/11/01メディア: 大型 が、OpenGL難しい!! 自分の環境に入っているOpenGLのバージョンを調べるとこから始めて、目標の処理を実装するまで2週間以上かかってしまいました。。。 ということで、この記事では自分がOpenGLに取り組んでみて「勉強前に知っていたら捗ったのになあ」と思ったことについてまとめたいと思います。 新しくOpenGLを勉強するときの取っ掛かりになれば幸いです。 ※ 2018/09/13:項目1のタイト

    OpenGLに入門する前に知っておきたかったこと - かみのメモ
  • OpenGLで描画した内容をMFCのコントロール上に描画する - SourceChord

    最近、MFCを使うようになったので、ちょっとGLとMFCを組み合わせてみたサンプルの備忘録。 MFCで、3D表示を行うソフトを作ろうとする場合、 GLの初期化など、毎度毎度面倒な処理が多々あるので、サブクラス化をしてまとめました。 MFCでGLを使いたいだけであれば、記事の最後の「再利用方法」の手順を行えばOKです。 結果画面 MFCのピクチャーコントロールを貼り付けて、そこにOpenGLで描画を行っています。 サブクラス化について サブクラス化という言葉はちょっと紛らわしいので、以下にまとめておきます。 C++などの言語使用上での意味 あるクラスを継承して派生クラスを作成すること。 Win32APIでのサブクラス化 ウィンドウや、エディットコントロールなど各種コントロールのインスタンスが持つウィンドウプロシージャを、独自のコールバック関数に入れ替えて動作をカスタマイズすること。 今回のテ

    OpenGLで描画した内容をMFCのコントロール上に描画する - SourceChord
  • OpenGLプログラミングメモ

    ここは、OpenGLについて学習し、その過程を記録するページです。 プログラミングメモとしてご利用下さい。 glutCreateWindowの位置を直す編集をした際に「<」以降が消えるという@wikiの仕様に気づかず、 正常に動作しないプログラムを長期に渡り掲載しておりました。 現在、修復作業中です。 直接、コードを記載すると今後、似たような仕様変更で同じ不具合に遭遇するかもしれないので プログラムコードはテキストデータとしてダウンロードする形に今後変更するかもしれません。

    OpenGLプログラミングメモ