Beauty Salon α-BET (alphabet)

space001
Blender3d Collada dae modeling Use Papervision3d on Progression3 and 4 http://a-bet.secret.jp/#/access
more whaison works.
whaison space
space002
http://whaison.jugem.jp/ https://jp.pinterest.com/whaison/ https://www.instagram.com/whaison/ https://whaison.amebaownd.com/
https://suzuri.jp/whaison
http://whaison.blogspot.com/
http://whaison.tumblr.com/ http://qiita.com/users/whaison http://www.behance.net/whaison https://github.com/whaison/ https://bitbucket.org/whaison http://serato.com/user/whaison http://whaison.hatenablog.jp/

typo memo
http://d.hatena.ne.jp/whaison/


dayNote
http://www.myspace.com/whaison http://ameblo.jp/whaison/ http://blog.crooz.jp/whaison/ http://blog.crooz.jp/whaisoncafe/ http://nenpyo.org/whaison

fulldisk
http://full.shin-gen.jp/
http://whaison.client.jp/
http://www.dclog.jp/whaison/
featured forums.
space004
forum.unity3d.com/

forums.unrealengine.com.

Progression Forum.

FlashDevelop Forum.

Papervision3D Forum.

FlexUserGroup Forum.

SparkProjectForum.





Twitter







Mobile
qrcode
Calendar
SunMonTueWedThuFriSat
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< March 2024 >>
New Entries
Archives
Categories
Recent comment
  • FlashDevelopでフォント埋め込み
    感謝!! (12/24)
  • cocos2d-x-3.0rc0 ,c++ ,cpp でTexturePacker で 吐き出した、plist と png でパラパラアニメーションのコード例
    whaison (04/17)
  • Blender2.67にbvh(web上に2500個以上ころがってる)入れてそのBoneオブジェクトをUnity4.0のmecanimで使う
    whaison (08/19)
  • Apple Dev Center 「Certificates, Identifiers & Profiles」で Adhoc をつくってXCode4.6.1でArchiveしてipaを書き出し
    whaison (04/30)
  • Flash CS6でプロパティーパネルで物理演算のジャンプの高さを設定できるCitrus Engine
    whaison (03/01)
  • 「Flash以外、例えばKinectとか」ON TOKYO (会場:高田馬場4-11-8 Floor 6階 ) 短縮URL http://bit.ly/dI0Bfx
    uka (03/02)
  • App Store Review Guidelines アップル社のアプリ審査基準ガイドライン和訳 Apple が 開発者を悩ませ ユーザーをハッピーにしたいガイドライン。w
    whaison (01/25)
  • Unity3d では ADOBE JAPAN OSAKIで行われたFITC 2010 TOKYOでは、 「iOS用にパブリッシュするためには、フリー版ではなくて、有料版を買ってください。さらに追加のパッケージである、"iOS Package (for Development)"を買ってください」とのことだった。
    whaison (01/25)
  • enjoy Adidas-Futsal-Park
    whaison (01/16)
  • MacBookAir にFlashPlayer入れたらなった。Mac Flash Player 10.1/10.2でUstream などでカメラが認識されないバグそんなときはUstreamProducer!でもなくiPhoneだと直ぐにライブ配信できた
    whaison (01/14)
simple sintax high lighter2.0
space003
SyntaxHighlighter2.0用 の貼り付けコード作成する!
ブログパーツ-BLOG PARTS.
Profile
Links
Recommend
Sponsored Links
Admin
無料ブログ作成サービス JUGEM
Seach this site
            
2022.03.28 Monday
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - | pookmark |
            
2016.12.08 Thursday
metal-without-xcode をやってみた。

 n-yoda's blog さんの  Metal Shading Language コンパイラの使い方

metal-without-xcode をやってみた。

 

 

パスを通した。

~/.bash_profile

export PATH=$PATH:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/usr/bin

 

が書いてあればいい。

 n-yoda様の/metal-without-xcode

 

クローンしてー

noboru-no-MacBook-Pro:~ whaison$ cd /works/metal-without-xcode
noboru-no-MacBook-Pro:metal-without-xcode whaison$ metal
metal: error: no input files
noboru-no-MacBook-Pro:metal-without-xcode whaison$ make shaders.metallib
metallib -o shaders.metallib shaders.metal-ar
metallib: creating metal-library shaders.metallib
noboru-no-MacBook-Pro:metal-without-xcode whaison$

 

noboru-no-MacBook-Pro:metal-without-xcode whaison$ make
clang++ -std=c++11 -framework Cocoa -framework Metal -framework MetalKit -fobjc-arc main.mm -o main
2016-11-25 23:09:25.559 xcodebuild[16710:294680] [MT] PluginLoading: Required plug-in compatibility UUID DA4FDFD8-C509-4D8B-8B55-84A7B66AE701 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Unity4XC.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2016-11-25 23:09:25.562 xcodebuild[16710:294680] Failed to load plugin at: /Users/whaison/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Unity4XC.xcplugin, skipping.  Reason for failure: *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]
main.mm:33:68: warning: 'NSTitledWindowMask' is deprecated: first deprecated in
      macOS 10.12 [-Wdeprecated-declarations]
  ...initWithContentRect:frame styleMask:NSTitledWindowMaskこのマスクは古いよってエラー
                                         ^~~~~~~~~~~~~~~~~~
                                         NSWindowStyleMaskTitled
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:953:32: note:
      'NSTitledWindowMask' has been explicitly marked deprecated here
static const NSWindowStyleMask NSTitledWindowMask API_DEPRECATED_WITH_RE...

                               ^
1 warning generated.
noboru-no-MacBook-Pro:metal-without-xcode whaison$

 

noboru-no-MacBook-Pro:metal-without-xcode whaison$ make
clang++ -std=c++11 -framework Cocoa -framework Metal -framework MetalKit -fobjc-arc main.mm -o main
noboru-no-MacBook-Pro:metal-without-xcode whaison$ make
make: Nothing to be done for `default'.

Nothing to be done for "defalt" 

makeが出しているメッセージだと思います。make defaltを実行しようとしたんだけど,もうやるべきことは全部やっちゃってて,もう`defaltl'のために実行することは何も残ってないですよ,って話。

すでにMakefileで指定された 依存関係をコンパイルして main ファイルが生成されてるよっていみ。

 

ダブルクリックしちゃったらこんなんなる

Last login: Sat Nov 26 01:39:31 on ttys002
noboru-no-MacBook-Pro:~ whaison$ /works/metal-without-xcode/main ; exit;ルートディレクトリで実行しちゃってるから
2016-11-26 01:42:37.832 main[25304:431196] main()
2016-11-26 01:42:37.832 main[25304:431196] autoreleasepool()
2016-11-26 01:42:37.895 main[25304:431196] initWithFrame()
2016-11-26 01:42:37.913 main[25304:431196] setup()
2016-11-26 01:42:37.913 main[25304:431196] Failed to load (shaders.metallib)library. error ===== Error Domain=MTLLibraryErrorDomain Code=6 "library not found" UserInfo={NSLocalizedDescription=library not found}

ルートディレクトリで実行しちゃってるからそりゃshaders.metallibロードできないよね。。。
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[プロセスが完了しました]

 

noboru-no-MacBook-Pro:~ whaison$ cd /works/metal-without-xcode

 

noboru-no-MacBook-Pro:metal-without-xcode whaison$  /works/metal-without-xcode/main ; exit;
2016-11-26 01:37:07.195 main[25022:426509] main()
2016-11-26 01:37:07.196 main[25022:426509] autoreleasepool()
2016-11-26 01:37:07.254 main[25022:426509] initWithFrame()
2016-11-26 01:37:07.262 main[25022:426509] setup()
2016-11-26 01:37:07.263 main[25022:426509] setup().Loaded....shaders.metallib
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[プロセスが完了しました]

 

やっとでた。

パスがめんどくさいのでsh main_run.shで実行できるようにshell書いといた。

 

noboru-no-MacBook-Pro:metal-without-xcode whaison$ sh main_run.sh
/works/metal-without-xcode
2016-11-26 02:20:43.126 main[27034:465653] main()
2016-11-26 02:20:43.126 main[27034:465653] autoreleasepool()
2016-11-26 02:20:43.198 main[27034:465653] initWithFrame()
2016-11-26 02:20:43.213 main[27034:465653] setup()
2016-11-26 02:20:43.213 main[27034:465653] setup().Loaded....shaders.metallib

 

https://github.com/whaison/metal-without-xcode.git

 

です。

 

 

 

| whaison | OpenGL,OpenGLES,glsl,DirectX,hlsl,webGL,metal,vulkan | 13:00 | comments(0) | - | pookmark |
            
2016.11.25 Friday
Sublime Text 3 for ios Metal Shading Langage MSL metalGL highlighter

 

 

here

~/Library/Application Support/Sublime Text 3/Packages/User/sublime-shaders/metal/

 

clone in to ~/Library/Application Support/Sublime Text 3/Packages/User/sublime-shaders

https://github.com/whaison/sublime-shaders.git

 

を入れれば

  metal のほか fork元のnoctさんの .glsl .hlsl .cg なんかも highlight される。

大それたことをやってるわけじゃないです。

n-yoda's blog さまから引用させていただきました。

http://ny.hateblo.jp/entry/2015/10/17/182307 から引用させていただきました。:

「Metal and C++11 に書いてあるように、Metalのシェーディング言語はほぼC++11なので実態はLLVM/Clangです

みたいなので

C++ハイライト設定に.metal足しただけです。

そしてそんなにsublime ユーザーでもないかもっていう。

 

 

 

| whaison | OpenGL,OpenGLES,glsl,DirectX,hlsl,webGL,metal,vulkan | 22:26 | comments(0) | - | pookmark |
            
2016.10.27 Thursday
Mobile-Motion-Particles-Alpha Blended-VColorV2.shader

Mobile-Motion-Particles-Alpha Blended-VColorV2.shader

 

 

| whaison | OpenGL,OpenGLES,glsl,DirectX,hlsl,webGL,metal,vulkan | 15:18 | comments(0) | - | pookmark |
            
2016.10.27 Thursday
MayaVertexColorAlpha.shader

MayaVertexColorAlpha.shader

 

Shader warning in  Output value 'vert' is not completely initialized at line 60 (on d3d11) Compiling Vertex program Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING

 

bugFixed  http://answers.unity3d.com/questions/754151/vert-output-parameter-o-not-completely-initialized.html

UNITY_INITIALIZE_OUTPUT(v2f, o);

 

 


Maya Color

Unity Color

 

| whaison | OpenGL,OpenGLES,glsl,DirectX,hlsl,webGL,metal,vulkan | 15:04 | comments(0) | - | pookmark |
            
2016.10.03 Monday
ToonShader

Toon shader Vertex shader -----------------------------

// // ToonShader.vsh //

 

// // ToonShader.fsh //



| whaison | OpenGL,OpenGLES,glsl,DirectX,hlsl,webGL,metal,vulkan | 22:22 | comments(0) | - | pookmark |
            
2016.06.12 Sunday
3D バッファ 一覧 OpenGL WebGL Unity
バッファ一覧
 

3Dでバッファ 一覧 
(一旦 日本語解釈 間違ってるかも。あとで聞いてみよ)

(OpenGL) Buffer Object のwikiから引用すると
https://www.opengl.org/wiki/Buffer_Object

OpenGL Object



Unityでは?
Vertex Buffer Object  VBO頂点データを扱う頂点バッファ これに入れると頂点がGPU に乗る

Index Buffer Object  IBOは 頂点を結ぶ順番 のインデックス番号をいれたバッファ (PrimitiveType:つなぎ方と一緒に使う)
vertex0(x,y,z), vertex1(x,y,z),vertex2(x,y,z),vertex3(x,y,z) をどうつなぐかPrimitiveType 

PrimitiveType :頂点のつなぎ方  3 種類ある。 ※Unityでは3D ObjectがPrimitiveTypeっていう名前。Cubeとかあんま使わない。

Stencil buffer そのほかステンシルバッファとはよく聞くマスクに使うやつ。直訳だと型板 版画みたいな感じ 軽いけど2D的

Depths baffer 深度を扱う深度バッファ、z座標の重なり順管理
unityも同様

unityも同様
frame buffer フレームバッファとは?バッファを統括するバッファであり、プログラムとスクリーンとの間を取り持つ仲介役

unityも同様
RendrerTextureはレンダリングされたテクスチャ

on unity

Grabpass で前のパスをとっとける

http://docs.unity3d.com/ja/current/Manual/SL-GrabPass.html

on unity

| whaison | OpenGL,OpenGLES,glsl,DirectX,hlsl,webGL,metal,vulkan | 21:03 | comments(0) | - | pookmark |
            
2016.05.29 Sunday
GLSL でなんかshaderが書けるゴリゴリのios7アプリ Gryphos GmbH「Shaderific - OpenGL ES shader development with GLSL」 https://appsto.re/jp/JyVBE.i
GLSL でなんかshaderが書けるゴリゴリのios7アプリ Gryphos GmbH「Shaderific - OpenGL ES shader development with GLSL」 https://appsto.re/jp/JyVBE.i



きいろ


シェーダ名変えてDone saveで右上で再生


できた

| whaison | OpenGL,OpenGLES,glsl,DirectX,hlsl,webGL,metal,vulkan | 14:36 | comments(0) | - | pookmark |
            
2015.10.26 Monday
Mac OS X 10.10.4でOpenGLのプログラムを始める方法

Mac OS X 10.10.4
Xcode_7_beta_4.
OS X >Applacation >CommandLineTool

適当に設定


Build Phasesで Link Binary With Librariesの+を押す

OpenGLと入力すると出てくる。

GLUTと入力すると出てくる。


main.cにOpenGLとGLUTのヘッダを付け加える

OpenGLとGLUTのヘッダは

#include <OpenGL/gl.h>
#include <GLUT/glut.h>

となる。ここはWindowsと異なるので注意。
------------------------------------------------------------

//

//  main.c

//  opengl001

//

//  Created by whaison on 2015/10/26.

//  Copyright © 2015 whaison. All rights reserved.

//

#include <OpenGL/gl.h>

#include <GLUT/glut.h>

#include <stdio.h>

int main(int argc, const char * argv[]) {

    // insert code here...

    printf("Hello, World!¥n");

    return 0;

}

-----------------------------------------------------------
ヘッダを付け加えるのは別にmain.cじゃなくてもいいと思うけど、
(例えばmain.hというファイルを作ってそこに書く)
僕はC言語は詳しくないのでこうしています。

これで少なくともコンパイルはできるはずです。


コンソールに「Hello, World!」と表示されるはずです。



これでうまくコンパイルされるなら、
main.cの中で自由にGLUTとOpenGLのライブラリが使えるはずです。

OpenGLのプログラミングに関しては、
例えば以下のページを参考にしてみてください。

GLUTによる「手抜き」OpenGL入門

参考
http://nozawashinichi.sakura.ne.jp/fs/2009/07/macopengl.html

 

だけじゃつまらないので、ウィンドウを出してみました。
//

//  main.c

//  opengl002

//

//  Created by whaison on 2015/10/26.

//  Copyright (c) 2015 whaison. All rights reserved.

//

#include <OpenGL/gl.h>

#include <GLUT/glut.h>

void display(void)

{

}

int main(int argc, const char * argv[]) {

    // insert code here...

    printf("Hello, World!¥n");

    glutInit(&argc, argv);

    glutCreateWindow(argv[0]);

    glutDisplayFunc(display);

    glutMainLoop();

    return 0;

}


こんなウィンドウがでました!。

ウィンドウ塗りつぶし 太字の部分を追加して。。。

#include <GL/glut.h>
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
void init(void)
{
glClearColor(0.0, 0.0, 1.0, 1.0);
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
init();
glutMainLoop();
return 0;
}




ウィンドウ塗りつぶしました。


 
| whaison | OpenGL,OpenGLES,glsl,DirectX,hlsl,webGL,metal,vulkan | 17:55 | comments(0) | - | pookmark |
            
2015.07.18 Saturday
OpenGL でとりあえず。なんかつくってみる。001-iOS 8.1 @ OpenGL ES 3.0ハローワールド
OpenGL でとりあえず。なんかつくってみる。001-iOS 8.1 @ OpenGL ES 3.0ハローワールド




なんかこんなん よく出るよねー


実機でそりゃー


Objective-C  h プロパティ
------------------------------------

//

//  RMViewController.h

//  test

//

//  Created by ramemiso on 2013/09/23.

//  Copyright (c) 2013 ramemiso. All rights reserved.

//

#import <UIKit/UIKit.h>

#import <GLKit/GLKit.h>

@interface RMViewController : GLKViewController

@end

------------------------------------
Objective-C  m  メインコード
-------------------------------------

//

//  RMViewController.m

//  test

//

//  Created by ramemiso on 2013/09/23.

//  Copyright (c) 2013 ramemiso. All rights reserved.

//

#import "RMViewController.h"

#import <OpenGLES/ES3/gl.h>

#import <OpenGLES/ES3/glext.h>

#define BUFFER_OFFSET(i) ((char *)NULL + (i))

// Uniform index.

enum

{

    UNIFORM_MODELVIEWPROJECTION_MATRIX,

    UNIFORM_NORMAL_MATRIX,

    NUM_UNIFORMS

};

GLint uniforms[NUM_UNIFORMS];

enum

{

    ATTRIB_POSITION,

    ATTRIB_NORMAL,

};

GLfloat gCubeVertexData[216] =

{

    // Data layout for each line below is:

    // positionX, positionY, positionZ,     normalX, normalY, normalZ,

    0.5f, -0.5f, -0.5f,        1.0f, 0.0f, 0.0f,

    0.5f, 0.5f, -0.5f,         1.0f, 0.0f, 0.0f,

    0.5f, -0.5f, 0.5f,         1.0f, 0.0f, 0.0f,

    0.5f, -0.5f, 0.5f,         1.0f, 0.0f, 0.0f,

    0.5f, 0.5f, -0.5f,          1.0f, 0.0f, 0.0f,

    0.5f, 0.5f, 0.5f,         1.0f, 0.0f, 0.0f,

    

    0.5f, 0.5f, -0.5f,         0.0f, 1.0f, 0.0f,

    -0.5f, 0.5f, -0.5f,        0.0f, 1.0f, 0.0f,

    0.5f, 0.5f, 0.5f,          0.0f, 1.0f, 0.0f,

    0.5f, 0.5f, 0.5f,          0.0f, 1.0f, 0.0f,

    -0.5f, 0.5f, -0.5f,        0.0f, 1.0f, 0.0f,

    -0.5f, 0.5f, 0.5f,         0.0f, 1.0f, 0.0f,

    

    -0.5f, 0.5f, -0.5f,        -1.0f, 0.0f, 0.0f,

    -0.5f, -0.5f, -0.5f,       -1.0f, 0.0f, 0.0f,

    -0.5f, 0.5f, 0.5f,         -1.0f, 0.0f, 0.0f,

    -0.5f, 0.5f, 0.5f,         -1.0f, 0.0f, 0.0f,

    -0.5f, -0.5f, -0.5f,       -1.0f, 0.0f, 0.0f,

    -0.5f, -0.5f, 0.5f,        -1.0f, 0.0f, 0.0f,

    

    -0.5f, -0.5f, -0.5f,       0.0f, -1.0f, 0.0f,

    0.5f, -0.5f, -0.5f,        0.0f, -1.0f, 0.0f,

    -0.5f, -0.5f, 0.5f,        0.0f, -1.0f, 0.0f,

    -0.5f, -0.5f, 0.5f,        0.0f, -1.0f, 0.0f,

    0.5f, -0.5f, -0.5f,        0.0f, -1.0f, 0.0f,

    0.5f, -0.5f, 0.5f,         0.0f, -1.0f, 0.0f,

    

    0.5f, 0.5f, 0.5f,          0.0f, 0.0f, 1.0f,

    -0.5f, 0.5f, 0.5f,         0.0f, 0.0f, 1.0f,

    0.5f, -0.5f, 0.5f,         0.0f, 0.0f, 1.0f,

    0.5f, -0.5f, 0.5f,         0.0f, 0.0f, 1.0f,

    -0.5f, 0.5f, 0.5f,         0.0f, 0.0f, 1.0f,

    -0.5f, -0.5f, 0.5f,        0.0f, 0.0f, 1.0f,

    

    0.5f, -0.5f, -0.5f,        0.0f, 0.0f, -1.0f,

    -0.5f, -0.5f, -0.5f,       0.0f, 0.0f, -1.0f,

    0.5f, 0.5f, -0.5f,         0.0f, 0.0f, -1.0f,

    0.5f, 0.5f, -0.5f,         0.0f, 0.0f, -1.0f,

    -0.5f, -0.5f, -0.5f,       0.0f, 0.0f, -1.0f,

    -0.5f, 0.5f, -0.5f,        0.0f, 0.0f, -1.0f

};

@interface RMViewController () {

    GLuint _program;

    

    GLKMatrix4 _modelViewProjectionMatrix;

    GLKMatrix3 _normalMatrix;

    float _rotation;

    

    GLuint _vertexArray;

    GLuint _vertexBuffer;

}

@property (strong, nonatomic) EAGLContext *context;

- (void)setupGL;

- (void)tearDownGL;

- (BOOL)loadShaders;

- (BOOL)compileShader:(GLuint *)shader type:(GLenum)type file:(NSString *)file;

- (BOOL)linkProgram:(GLuint)prog;

- (BOOL)validateProgram:(GLuint)prog;

@end

@implementation RMViewController

- (void)viewDidLoad

{

    [super viewDidLoad];

    

    self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];

    if (!self.context) {

        NSLog(@"Failed to create ES context");

    }

    

    GLKView *view = (GLKView *)self.view;

    view.context = self.context;

    view.drawableDepthFormat = GLKViewDrawableDepthFormat24;

    

    [self setupGL];

}

- (void)dealloc

{    

    [self tearDownGL];

    

    if ([EAGLContext currentContext] == self.context) {

        [EAGLContext setCurrentContext:nil];

    }

}

- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    if ([self isViewLoaded] && ([[self view] window] == nil)) {

        self.view = nil;

        

        [self tearDownGL];

        

        if ([EAGLContext currentContext] == self.context) {

            [EAGLContext setCurrentContext:nil];

        }

        self.context = nil;

    }

    // Dispose of any resources that can be recreated.

}

- (void)setupGL

{

    [EAGLContext setCurrentContext:self.context];

    

    [self loadShaders];

    

    glEnable(GL_DEPTH_TEST);

    glGenVertexArrays(1, &_vertexArray);

    glBindVertexArray(_vertexArray);

    

    glGenBuffers(1, &_vertexBuffer);

    glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);

    glBufferData(GL_ARRAY_BUFFER, sizeof(gCubeVertexData), gCubeVertexData, GL_STATIC_DRAW);

    

    glEnableVertexAttribArray(ATTRIB_POSITION);

    glVertexAttribPointer(ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE, 24, BUFFER_OFFSET(0));

    glEnableVertexAttribArray(ATTRIB_NORMAL);

    glVertexAttribPointer(ATTRIB_NORMAL, 3, GL_FLOAT, GL_FALSE, 24, BUFFER_OFFSET(12));

    

    glBindVertexArray(0);

}

- (void)tearDownGL

{

    [EAGLContext setCurrentContext:self.context];

    

    glDeleteBuffers(1, &_vertexBuffer);

    glDeleteVertexArrays(1, &_vertexArray);

    

    if (_program) {

        glDeleteProgram(_program);

        _program = 0;

    }

}

#pragma mark - GLKView and GLKViewController delegate methods

- (void)update

{

    float aspect = fabsf(self.view.bounds.size.width / self.view.bounds.size.height);

    GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(65.0f), aspect, 0.1f, 100.0f);

    

    GLKMatrix4 baseModelViewMatrix = GLKMatrix4MakeTranslation(0.0f, 0.0f, -4.0f);

    baseModelViewMatrix = GLKMatrix4Rotate(baseModelViewMatrix, _rotation, 0.0f, 1.0f, 0.0f);

    

    GLKMatrix4 modelViewMatrix = GLKMatrix4MakeTranslation(0.0f, 0.0f, 1.5f);

    modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, _rotation, 1.0f, 1.0f, 1.0f);

    modelViewMatrix = GLKMatrix4Multiply(baseModelViewMatrix, modelViewMatrix);

    

    _normalMatrix = GLKMatrix3InvertAndTranspose(GLKMatrix4GetMatrix3(modelViewMatrix), NULL);

    

    _modelViewProjectionMatrix = GLKMatrix4Multiply(projectionMatrix, modelViewMatrix);

    

    _rotation += self.timeSinceLastUpdate * 0.5f;

}

- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect

{

    glClearColor(0.65f, 0.65f, 0.65f, 1.0f);

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    

    glBindVertexArray(_vertexArray);

    

    glUseProgram(_program);

    

    glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m);

    glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m);

    glDrawArrays(GL_TRIANGLES, 0, 36);

}

#pragma mark -  OpenGL ES 2 shader compilation

- (BOOL)loadShaders

{

    GLuint vertShader, fragShader;

    NSString *vertShaderPathname, *fragShaderPathname;

    

    // Create shader program.

    _program = glCreateProgram();

    

    // Create and compile vertex shader.

    vertShaderPathname = [[NSBundle mainBundle] pathForResource:@"Shader" ofType:@"vsh"];

    if (![self compileShader:&vertShader type:GL_VERTEX_SHADER file:vertShaderPathname]) {

        NSLog(@"Failed to compile vertex shader");

        return NO;

    }

    

    // Create and compile fragment shader.

    fragShaderPathname = [[NSBundle mainBundle] pathForResource:@"Shader" ofType:@"fsh"];

    if (![self compileShader:&fragShader type:GL_FRAGMENT_SHADER file:fragShaderPathname]) {

        NSLog(@"Failed to compile fragment shader");

        return NO;

    }

    

    // Attach vertex shader to program.

    glAttachShader(_program, vertShader);

    

    // Attach fragment shader to program.

    glAttachShader(_program, fragShader);

       

    // Link program.

    if (![self linkProgram:_program]) {

        NSLog(@"Failed to link program: %d", _program);

        

        if (vertShader) {

            glDeleteShader(vertShader);

            vertShader = 0;

        }

        if (fragShader) {

            glDeleteShader(fragShader);

            fragShader = 0;

        }

        if (_program) {

            glDeleteProgram(_program);

            _program = 0;

        }

        

        return NO;

    }

    

    // Get uniform locations.

    uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX] = glGetUniformLocation(_program, "modelViewProjectionMatrix");

    uniforms[UNIFORM_NORMAL_MATRIX] = glGetUniformLocation(_program, "normalMatrix");

    

    // Release vertex and fragment shaders.

    if (vertShader) {

        glDetachShader(_program, vertShader);

        glDeleteShader(vertShader);

    }

    if (fragShader) {

        glDetachShader(_program, fragShader);

        glDeleteShader(fragShader);

    }

    

    return YES;

}

- (BOOL)compileShader:(GLuint *)shader type:(GLenum)type file:(NSString *)file

{

    GLint status;

    const GLchar *source;

    

    source = (GLchar *)[[NSString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:nil] UTF8String];

    if (!source) {

        NSLog(@"Failed to load vertex shader");

        return NO;

    }

    

    *shader = glCreateShader(type);

    glShaderSource(*shader, 1, &source, NULL);

    glCompileShader(*shader);

    

#if defined(DEBUG)

    GLint logLength;

    glGetShaderiv(*shader, GL_INFO_LOG_LENGTH, &logLength);

    if (logLength > 0) {

        GLchar *log = (GLchar *)malloc(logLength);

        glGetShaderInfoLog(*shader, logLength, &logLength, log);

        NSLog(@"Shader compile log:¥n%s", log);

        free(log);

    }

#endif

    

    glGetShaderiv(*shader, GL_COMPILE_STATUS, &status);

    if (status == 0) {

        glDeleteShader(*shader);

        return NO;

    }

    

    return YES;

}

- (BOOL)linkProgram:(GLuint)prog

{

    GLint status;

    glLinkProgram(prog);

    

#if defined(DEBUG)

    GLint logLength;

    glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &logLength);

    if (logLength > 0) {

        GLchar *log = (GLchar *)malloc(logLength);

        glGetProgramInfoLog(prog, logLength, &logLength, log);

        NSLog(@"Program link log:¥n%s", log);

        free(log);

    }

#endif

    

    glGetProgramiv(prog, GL_LINK_STATUS, &status);

    if (status == 0) {

        return NO;

    }

    

    return YES;

}

- (BOOL)validateProgram:(GLuint)prog

{

    GLint logLength, status;

    

    glValidateProgram(prog);

    glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &logLength);

    if (logLength > 0) {

        GLchar *log = (GLchar *)malloc(logLength);

        glGetProgramInfoLog(prog, logLength, &logLength, log);

        NSLog(@"Program validate log:¥n%s", log);

        free(log);

    }

    

    glGetProgramiv(prog, GL_VALIDATE_STATUS, &status);

    if (status == 0) {

        return NO;

    }

    

    return YES;

}

@end

-------------------------------------


参考
http://ramemiso.hateblo.jp/entry/2013/09/23/175127
| whaison | OpenGL,OpenGLES,glsl,DirectX,hlsl,webGL,metal,vulkan | 19:22 | comments(0) | - | pookmark |
            
2015.07.18 Saturday
OpenGL Insights 日本語版 ボーンデジタル Patrick Cozzi & Christophe Riccio(書籍)で読んだこと
評価:
Patrick Cozzi,Christophe Riccio
ボーンデジタル
¥ 14,040
(2013-03-23)
コメント:この本 技術書にしては 表紙がぶ厚くてハードカバー でフルカラーで13000円と、笑うぐらい高く そして重い。だけどテクノロジー的に突っ込みにくいと思っていたOpen GL関連にとっては読みやすさ抜群だと思う。にとても読みやすい。
Amazonランキング: 554353位

OpenGL insights 日本語版 ボーンデジタル Patrick Cozzi & Christophe Riccio(書籍)で読んだこと

この本 技術書にしてはめっちゃ 表紙がぶ厚くてハードカバー でフルカラーで 13000円と、笑うぐらい高く そして重い。

関連URL
http://www.openglinsights.com/
http://www.borndigital.co.jp/book/2783.html
http://www.borndigital.co.jp/book/support/3736.html


【目次】
発見
1 コンピュータ グラフィックスをシェーダ ベースのOpenGLから教える
2 デプリケーション後のOpenGLに学生を移行させる
3 OpenGL開発者のためのWebGL
4 モバイル アプリのWebGLへの移植
5 GLSLシェーダ インターフェイス
6 テッセレーション シェーダ入門
7 GLSLによる手続き型テクスチャ
8 OpenGLとOpenGL ESに基づくOpenGL SCエミュレーション
9 複数のGPUによるグラフィックスと計算のミックス

レンダリング テクニック
10 GPUテッセレーション:まだカバーすべき地形のLODがある
11 シェーダ ベースの押し出しを使ってアンチエイリアスするボリュームのある直線
12 距離場による2D形状のレンダリング
13 WebGLの効率的なテキスト レンダリング
14 階層化テクスチャ レンダリング パイプライン
15 ボケ レンダリングによる被写界深度
16 影プロクシ

パイプラインを曲げる
17 トランスフォーム フィードバックを使うリアルタイムな物理に基づく変形
18 GPU上の階層深度カリングと境界ボックスの管理
19 階層化レンダリングで大量の影を投じるライト
20 効率的な積層フラグメント バッファ テクニック
21 プログラマブル頂点プル
22 GPUのハードウェア ラスタライザを使ったオクツリーに基づく疎なボクセル化

性能
23 タイル ベースのアーキテクチャでの性能チューニング
24 モバイル vs. デスクトップのOpenGL性能を探る
25 ドライバの呼び出しを減らして性能を改善する
26 複数の頂点配列のインデックス化
27 NVIDIA Quadro上のマルチGPUレンダリング

転送
28 非同期バッファ転送
29 Fermiの非同期テクスチャ転送
30 WebGLモデル:エンドツーエンド
31 リアルタイム テクスチャ圧縮によるゲーム中のビデオ キャプチャー
32 OpenGLフレンドリーなジオメトリ ファイル フォーマット、そのMayaエクスポーター

デバッグとプロファイリング
33 ARB_debug_output:絶望的な開発者のためのOpenGLの解決策
34 OpenGLタイマー クエリ
35 リアルタイム プロファイリング ツール
36 ブラウザ グラフィックスの分析と最適化
37 パフォーマンス ステート トラッキング
38 グラフィックス メモリ使用のモニタリング

ソフトウェア設計
39 ANGLEプロジェクト:Direct3D上のOpenGL ES 2.0実装
40 SceneJS:WebGLベースのシーン グラフ エンジン
41 SpiderGLの特徴と設計選択
42 Web上でのマルチモーダル インタラクティブ シミュレーション
43 OpenGL とOpenGL ESの使用へのサブセット アプローチ
44 ビルド症候群


 
| whaison | OpenGL,OpenGLES,glsl,DirectX,hlsl,webGL,metal,vulkan | 17:25 | comments(0) | - | pookmark |