質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
openFrameworks

openFrameworksは、C++で記述されたライブラリ群です。既存のライブラリの設定なしで使用できるため「糊」のようなツールキットと呼ばれています。簡単なコードだけで様々なグラフィックスやインタラクションをデザインすることが可能です。

Q&A

1回答

2394閲覧

OpenFrameWorksのVbo機能によるエラー

seri

総合スコア422

openFrameworks

openFrameworksは、C++で記述されたライブラリ群です。既存のライブラリの設定なしで使用できるため「糊」のようなツールキットと呼ばれています。簡単なコードだけで様々なグラフィックスやインタラクションをデザインすることが可能です。

0グッド

0クリップ

投稿2016/08/04 10:56

編集2016/08/04 11:40

Vboを作成しDrawしたいのですが、エラーがでます。

以下のスクリプトでは、ボタンを押すとpad1on()が呼び出されます
その後CreateHexを開始し、childDraw()内でvboをDrawしています。このDraw時にエラーとなります、、
調べても原因がわかりません。。

C++

1#include "Sean-1.h" 2 3 4void Sean_1::Setup() { 5 _vbos.clear(); 6 ofBackground(0, 0, 0); 7 ofEnableDepthTest(); 8 ofEnableBlendMode(OF_BLENDMODE_ADD); 9 10 cam.setDistance(100); 11 12 ofSetColor(214, 181, 255, 100); 13 14 } 15void Sean_1::Update() { 16 ofSetWindowTitle(ofToString(ofGetFrameRate(), 2)); 17 18} 19 20void Sean_1::pad1on() { 21 createHex(22,3); 22} 23 24void Sean_1::createHex(float x,float y) { 25 26 ofVbo vb; 27 ofVec3f vec[6]; 28 float seta = TWO_PI / 6; 29 30 ofTranslate(ofGetWidth() / 2, ofGetHeight() / 2); 31 32 for (int i =0; i < 5; i++) { 33 vec[i].set(10 * cos(ofGetElapsedTimef() + seta*i)+x,10 * sin(ofGetElapsedTimef() + seta*i)+y, 0); 34 } 35 36 vb.setVertexData(vec,6,GL_DYNAMIC_DRAW); 37 38 _vbos.push_back(vb); 39 40} 41 42 43void Sean_1::childDraw() { 44 cam.begin(); 45 46 glPointSize(2.0); 47 for (int i = 0; i < _vbos.size(); i++) { 48 _vbos[i].draw(GL_POLYGON, 0, 6); 49 } 50 cam.end(); 51 52} 53 54

ちなみに、エラーは以下です

0x55C71363 (nvoglv32.dll) で例外がスローされました (myFile_debug.exe 内): 0xC0000005: 場所 0x00000000 の読み取り中にアクセス違反が発生しました この例外のハンドラーがある場合は、プログラムを安全に続行できます。

名前から想像できるかとは思いますが一応ヘッダファイル内容も記述させていただきます

C++

1private: 2 3 void createHex(float x, float y); 4 5 ofEasyCam cam; 6 7 ofMesh mesh; 8 9 vector<ofVbo> _vbos; 10 11 vector<ofVec3f> vecs; 12

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

createHex関数の
for (int i =0; i < 5; i++) {
この部分での格納が5個なのに対して

vb.setVertexData(vec,6,GL_DYNAMIC_DRAW);
_vbos[i].draw(GL_POLYGON, 0, 6);

この2つの部分で指定しているvboの数が6だからではないかと思うのですがどうでしょうか?
for (int i =0; i < 6; i++) {
に修正すればよいかもと思います。

投稿2018/02/16 12:29

chibi_hamu

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問