Vala プログラミング

Rust プログラミング

おながのブログ

Rust kiss3d ライブラリ

kiss3dライブラリ(https://github.com/sebcrozet/kiss3d)の紹介です。kiss3dは、3dのグラフィックス エンジン(graphics engine)です。 オブジェクト(cubeやsphereなど)の描画、オブジェクトの拡大縮小や回転などの 操作が簡単にできるように設定されてい…

Rust glium Tessellation (4) 3D surface

glium テッセレーションDavid Wolff著「OpenGL 4.0 シェーディング言語 ( OpenGL 4.0 Shading Language Cookbook )」 第6章「ジオメトリシェーダとテッセレーションシェーダ」 「3Dサーフェイスをテッセレートする」 「シェーディングしたメッシュの上にワイ…

Rust glium Tessellation (3) Teapot

glium テッセレーション Teapot ( Phong Model )実行結果 tessellation level = 2 tessellation level = 4 tessellation level = 81 depth bufferの設定 let display = glutin::WindowBuilder::new() .with_dimensions(800, 600) .with_title(format!("Tess …

Rust glium Tessellation (2) 2D quad

glium テッセレーションDavid Wolff著「OpenGL 4.0 シェーディング言語 ( OpenGL 4.0 Shading Language Cookbook )」 第6章「ジオメトリシェーダとテッセレーションシェーダ」 「2D四角形をテッセレートする」実行結果 tessellation level = 2 tessellation …

Rust glium Tessellation (1) Bezier Curve

glium(https://github.com/tomaka/glium)のexamplesにあるtessellation プログラム(tessellation.rs)を参考にして、David Wolff著「OpenGL 4.0 シェーディング言語 ( OpenGL 4.0 Shading Language Cookbook )」の6章 「ジオメトリシェーダとテッセレーショ…

Rust glium ( OpenGL ) triangle and square

rust の glium ライブラリを利用して、三角と四角を同一ウィンドウに 表示します。実行結果 プログラム #[macro_use] extern crate glium; fn main() { use glium::{DisplayBuild, Surface}; let display = glium::glutin::WindowBuilder::new() .with_dimen…

Rust OpenGL gliumライブラリ

今回は、RustでOpenGLを扱うライブラリの一つであるgliumについて まとめています。(glium([https://github.com/tomaka/glium/)の examplesにあるtutorial-02.rsを使用しています。)gliumでは、OpenGLのAPIとは異なる独自のAPIを導入しています。 以下は、…

Rust glium テッセレーション ( Tessellation )

glium (https://github.com/tomaka/glium)のexamplesに、tessellationの サンプル(tessellation.rs)があります。 上矢印キーと下矢印キーを使って、tessellation レベルを上げ下げできます。実行結果 tessellation level = 2 tessellation level = 4 tesse…

Rust ImGui + Glium ( OpenGL )

ImGui のGUI(ボタン)から、Gliumで描画したtriangleの回転角をコントロールできる ようにしています。 (実行結果) ・ imgui ウィンドウ上の「+」ボタンと「ー」ボタンを押すと、回転角の値が増減します。プログラム ### imgui-glium.rs #[macro_use] ex…

Rust Glium CubeMap ( OpenGL )

CubeMap (実行結果) ・ cubemap 画像は、Humus サイト(http://www.humus.name/)のTexures(Yokohama 3) を使用しています。(画像サイズを512x512にしています。) プログラム ###glium-cubemap.rs #[macro_use] extern crate glium; extern crate image;…

Rust glium OpenGL ( triangle )

Rust言語のgliumライブラリ(OpenGLライブラリ)を用いて、coloured triangleを描画しています。 ( 実行結果)・triangleは、上矢印キー(左回転)と下矢印キー(右回転)を使って回転させて います。 プログラム### triangle.rs#[macro_use]extern crate gl…

Elementary OS

Elementary OS 0.4 (Loki)https://elementary.io/ja/ Ubuntu 16.04 (LTS) をベースにしたデスクトップです。

Korora25

Korora25Korora Project 現在使用しているLinuxデスクトップです。Fedora25(GNOME)相当で、Dash to Dock など幾つかのGNOME Shell 拡張等が前もってインストールされています。使い易いデスクトップになっています。

Vala OpenGL ( ValaGL MatrixMath.vala )

ValaGL MatrixMath.vala の演算 Mat4 ( 4x4 行列) Mat4 の定義struct Mat4 メンバー float data[16] Mat4 各要素 m11(data[0]), m12(data[4]), m13(data[8]), m14(data[12]) m21(data[1]), m22(data[5]), m23(data[9]), m24(data[13]) m31(data[2]), m32(dat…

Vala OepnGL ( ValaGL MatrixMath.vala )

ValaGL MatrixMath.vala の演算Mat3(3x3 行列) Mat3 の定義struct Mat3 メンバー float data[9] Mat3 の各要素 m11(data[0]), m12(data[3]), m13(data[6]) m21(data[1]), m22(data[4]), m23(data[7]) m31(data[2]), m32(data[5]), m33(data[8]) メソッド …

Vala OpenGL ( ValaGL MatrixMath.vala)

ValaGL MatrixMath.vala の演算Vec4 ( 4次元ベクトル)Vec4の定義struct Vec4 *4次元ベクトル メンバー GLfloat data[4] メソッド *生成 Vec4() 要素が 0 値の Vec4 を生成 (Creates a new vector, zero initialized.) Vec4.from_data (GLfloat x, GLfloat …

Vala OpenGL ( ValaGL MatrixMath.vala )

ValaGL MatrixMath.vala の演算 前回のブログで使用した、ValaGL MatrixMath.vala の演算について書いています。 今回は、Vec3 ( 3次元ベクトル)です。 Vec3の定義 struct Vec3 メンバー GLfloat data[3] メソッド * 生成 Vec3() 要素が 0 値の Vec3 を生…

ValaGL + Gtk.GLArea ( Vala & OpenGL)

実行結果 (実際の実行では、スペースキーで、cubeが回転、停止します。) 下記のサイトで、Vala, SDL, GLEW で記述された、OpenGL 3.x に対応したrotating cubeアプリケーションが紹介されています。 (30/03/2013) ValaGL(simple skeletal application) (…

Genie + OpenGL(3)

前回プログラム(Genie + OpenGL)のワーニング 前回使用したプログラム(testglarea.gsとglarea.gs)とvapiでは、glShaderSource関数に関して、以下のようなワーニングが出ていました。 ** ワーニング ** testglarea.vala.c: 関数 ‘main_window_on_real…

Genie + OpenGL(Gtk.GLArea)2

gtk3-demoにあるGLAreaデモをGenie言語で書き直しました。 (単独のプログラムは、gtk+-3.16ソース内のtestsにあります。testglarea.c) *testglarea.gs(前回のプログラム)と同じglepoxy.vapiを使っています。 ##glarea.gs uses Gtk GL init Gtk.init (re…

Genie + OpenGL(Gtk.GLArea)

gtk+-3.16から、Gtk.GLArea ウィジェが追加され、GtkWindow内で簡単にOpenGLプログラミングが出来るようになりました。OpenGL context等が自動的に設定されます。 OpenGLライブラリとして、epoxyライブラリを使用しています。 Gtk.GLArea ウィジェ とOpenGL…

Genie Image Viewer 2 (GtkStack)

プログラムを実行したところ 一覧表示(List)から画像を選択し、拡大表示(Large)ボタンを押すとページが 遷移し拡大画像が表示される。 前回のimage-viewerプログラムをGtkStackを使って書き直しました。clutter-gtkを使用しています。・ファイルの読み込…

Genie Image Viewer

(プログラムを実行したところ) (画像一覧で画像を選択するとウィンドウ全体に表示される。再度クリックすると、 一覧表示に戻る。) GNOME Developer Platform Demos にある clutter を利用したサンプル photo-wall.c をGenieで書き直してみました。Genie…

Vala言語とOpenGL (4)

GUIをGladeで作成しました。Gladeでの作成画面 adjustmentの設定画面 Scale上のスライダの表示方法は、下に書いてあります。 gtkcluttergl4.valausing Gtk;using GtkClutter;using Clutter; public class Main : Object { const string UI_FILE = "mainwindo…

Vala言語とOpenGL (3)

三角形の回転にScaleウィジェを利用しています。 gtkclutter3.valausing Gtk;using GtkClutter;using Clutter; public class MainWindow : Gtk.Window{ private Clutter.Actor coglbox; private static float alpha; public MainWindow () { title = "GtkClu…

Vala言語とOpenGL (2)

GtkウィンドウにOpenGLを描画していることが分かるように、ボタン(Button)をウィンドウに追加しました。また、Stageのmotion_eventシグナルを使って、Stage上でマウスを動かすと三角形が回転するようにしました。コールバック関数には、無名関数を使っていま…

Vala言語とOpenGL

Vala言語を使ったOpenGLによる描画について書いています。プログラムのサンプルが、GNOME Wiki! のページにあります。Vala OpenGL Samples(https://wiki.gnome.org/Projects/Vala/OpenGLSamples) GLFW、GtkGLExt、GLX、GLUTライブラリを使ったサンプルです…

Vala + Cogl Cube(4)

ポリゴンの法線ベクトルと光線方向のベクトル(z方向)の内積を作り、 ポリゴン面の色の強さに設定しています。(上はマウスで回転している様子) プログラム private static float alpha;private static float beta; void paint_cb () { Cogl.push_matrix (…

Vala + Cogl Cube(3)

Materialを設定し、材質の色(diffuse, ambient, specular)を設定しています。 いろいろ調べましたが、光源の設定、法線ベクトルの設定が分かりません。 OpenGLライブラリを使用しています。 プログラム cube3.vala using GL; private static float alpha;pr…

Vala + Cogl Cube(2)

ポリゴンをマウスの移動で回転させています。 プログラム cube2.vala private static float alpha;private static float beta; void paint_cb () { Cogl.push_matrix (); Cogl.translate (300, 200, -200); Cogl.rotate (alpha, 1, 0, 0); //stdout.printf("…