忍者ブログ
凡人の日々の経過を記録
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



 GLSLを勉強するにあたって、プラットフォームがかわらずGLUTを使っている。
それでもGLUT+GLEWでOpenGL3.xや4.xにもすんなり対応できている。
それほど困ることはないが、なんとなく新しいもので揃えてきているので、やっぱりGUIも違うものを選択したくなる。
調べてみるといくつかあって、その中で、
  • GLFW
  • SDL(Simple DirectMedia Layer)
  • Qt
が良さそうに感じた。
一応すべてJoystick対応だと思う。
GLUTに比べてだいぶ痒いところに手が届くようになると思われる。
GLFWはOpenGLに特化してこの中でもっとも軽量、QtはGUIのAPIが豊富で機能盛りだくさん。

どれもよさそうだが、ただOpenGL4.xに対応しているかが微妙。
いや対応していなさそう。

うーむ、どうしたものか。


 



拍手[0回]

PR


 CMakeはマルチプラットフォームの環境構築が容易になるツールらしい。

-- CMakeLists.txt
 
 
#プロジェクト名
project(HelloProject)

# 実行ファイルとソースファイル群の指定
add_executable(hello hello.cpp)
-------

 % cmake .
 % make
 % ./hello

とりあえずさわりだけ。
 

拍手[0回]



 GLM(OpenGL Mathematics)はベクトルや行列演算を補助するライブラリで、GLSLで使われる変数に類似している。
OpenGL ES2.0やOpenGL4.0と進んでいる中で固定シェーダ記述はもう使えない。
たとえば、
  glLoadIdentity();
  glMatrixMode(GL_MODELVIEW);
  glMultMatrixf()
  gluLookAt();
 
といった記述はもう書けない。
そこで重宝するのがGLMというライブラリ。
GLMを使うと次のような感じ。

using namespace glm;
mat4 Projection = perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f);
mat4 ViewTranslate = translate( mat4(1.0f), vec3(0.0f, 0.0f, -Translate));
mat4 ViewRotateX = rotate( ViewTranslate, Rotate.y, vec3(-1.0f, 0.0f, 0.0f));
mat4 View = rotate( ViewRotateX, Rotate.x, vec3(0.0f, 1.0f, 0.0f));
mat4 Model = scale( mat4(1.0f), vec3(0.5f));
mat4 MVP = Projection * View * Model;
glUniformMatrix4fv( LocationMVP, 1, GL_FALSE, value_ptr(MVP));

MVPの計算がかなりスマートに書ける。
APIはGLSLの記述+αの程度わかれば使いこなせそうだ。
OpenGL+GLMでググってみるとトップページにででくる。


今後、きっとこのライブラリのお世話になるだろう。

拍手[0回]



Ubuntu 10.04でOpenMPを試してみた。
pkgとしては、libgomp1がそれっぽい。

 % g++ -v
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) 
 

#include <stdio.h>
#include <omp.h>

int main(int argc, char *argv[])
{
    #pragma omp parallel
    printf( "Hello, OpenMP!\n" );
    return 0;
}

 % g++ -fopenmp -o run.x hello.cpp

 % ./run.x
Hello, OpenMP!
Hello, OpenMP!
Hello, OpenMP!
Hello, OpenMP!
Hello, OpenMP!
Hello, OpenMP!
Hello, OpenMP!
Hello, OpenMP!

 
コンパイルオプションとして、-fopenmpをつけてやる必要があるようだ。
ライブラリ指定は特にしていしなかった。
実行するとprint文がCPUの数分表示された。

 


拍手[0回]



include_classを使わずに、importを使ってもできるようです。

require 'java'
import java.lang.System;

System.out.println 'Hello Java!'

拍手[0回]




Powered by 忍者ブログ  Design by © まめの
Copyright © [ ずくのない凡人の日記 ] All Rights Reserved.
http://bambooflow.blog.shinobi.jp/