検索結果 20 件

by Sigma
8年前
フォーラム: C言語何でも質問掲示板
トピック: c++で弾幕風における”yield”の実現
返信数: 19
閲覧数: 7042

Re: c++で弾幕風における”yield”の実現

やってみましたが確かに通りました。
どうやらyieldを使う関数の宣言と定義を別ファイルにするとエラーをはかれるようです。

複数起動できないという点は今気づきました…
先ほどの方法を改良すればいいらしいですが、
私的にはコルーチンを通すための値を作りたくなくて、
あくまで(例えば)taskと関数に宣言するくらいで出来るようにしたいです。
今まで調べてたものもそれが一番のネックで実装を躊躇してましたが、これしか無いのであれば諦めは付くのですが…
by Sigma
8年前
フォーラム: C言語何でも質問掲示板
トピック: c++で弾幕風における”yield”の実現
返信数: 19
閲覧数: 7042

Re: c++で弾幕風における”yield”の実現

一応通ったコードを載せます。 #ifndef _EFFNOWLOADING_H_ #define _EFFNOWLOADING_H_ #include "DxLib.h" #include "../Effect/FallParticle.h" #include "../Utility/Coroutine.h" #include "../Loader/LoadData.h" #include <list> using namespace std; #define CoroutineBegin switch(state){case 0: #define CoroutineEnd default: ...
by Sigma
8年前
フォーラム: C言語何でも質問掲示板
トピック: c++で弾幕風における”yield”の実現
返信数: 19
閲覧数: 7042

Re: c++で弾幕風における”yield”の実現

もしかしてと思い、コルーチンの定義・コルーチンを使用する関数を同じファイルにした所通りました。
これってファイル分割できないのですね・・・
となると割と不便。。。
by Sigma
8年前
フォーラム: C言語何でも質問掲示板
トピック: c++で弾幕風における”yield”の実現
返信数: 19
閲覧数: 7042

Re: c++で弾幕風における”yield”の実現

環境はVC++2010Expressです。 DXLibを参照させてあります。 //先ほどのリンク先にあるコルーチンクラスを継承させたクラスの1関数 void EffNowLoading::UpdateTask() { CoroutineBegin(); for(int i=0; i<64; i++){ if(mMoveB>544)mMoveB -= 64/15; yield; //この行で先ほどのエラーが起きてしまう } for(int i=0; i<64; i++){ mBrinkA += 360/45; mBrinkB += 360/60; yield; } CoroutineEnd();...
by Sigma
8年前
フォーラム: C言語何でも質問掲示板
トピック: c++で弾幕風における”yield”の実現
返信数: 19
閲覧数: 7042

Re: c++で弾幕風における”yield”の実現

長らく放置してしまって申し訳ありません。
yieldの実装について試行錯誤をしてましたが、擬似コルーチンの手法を見つけ今実装中です。
http://d.hatena.ne.jp/izmktr/20120220/1329745486#c

しかし試しては見たものの、「error C2051: case 式は、整数型定数でなければなりません。」と言われてしまいました。
試しにswitch文のcaseに__LINE__を入れただけのものを実行してみると同じエラーが吐かれました。
もしかして環境によってcaseに__LINE__が使えないのでしょうか…
by Sigma
8年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリにおける回転・拡大させたプリミティブ描画
返信数: 6
閲覧数: 1102

Re: DXライブラリにおける回転・拡大させたプリミティブ描画

ふむ…そうですか。
では一応マトリクスを使わない方向でいこうと思います。
ありがとうございました。
by Sigma
8年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリにおける回転・拡大させたプリミティブ描画
返信数: 6
閲覧数: 1102

Re: DXライブラリにおける回転・拡大させたプリミティブ描画

一応インデックス配列を整備してトライアングルストライプの実現はしてます void PrimitiveObj::SetPrimitiveType(int type) { if(mIndex==NULL) delete[] mIndex; switch(type) { case PRIM_TRIANGLESTRIP: mIdxnum = (mVernum-2)*3; mIndex = new WORD[mIdxnum]; for(int i=0; i<(mIdxnum/3); i++) { mIndex[i*3] = i; mIndex[i*3+1] = i+1; mIndex[i*3+2] = ...
by Sigma
8年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリにおける回転・拡大させたプリミティブ描画
返信数: 6
閲覧数: 1102

Re: DXライブラリにおける回転・拡大させたプリミティブ描画

DrawPolygonIndexed3Dの4つめの引数ですよね?
そこはポリゴン数(三角形の数)なんで
頂点数-2=ポリゴン数
で合ってるはずです。

ちなみにはしご式にポリゴンを組立ててる前提です。
by Sigma
8年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリにおける回転・拡大させたプリミティブ描画
返信数: 6
閲覧数: 1102

DXライブラリにおける回転・拡大させたプリミティブ描画

DXライブラリでのプリミティブ描画でマトリクスを使用した回転・拡大変形描画をしているのですが、 マトリクスによる「ベクトルに置き換えた頂点座標」の回転・拡大変形をさせると描画されなくなってしまいます。 1つの画像の一部分を矩形指定して描画する仕組みなのですが、マトリクスによる算出を行うと描画されなくなってしまいます。 1つのプリミティブ描画オブジェクトを制御するPrimitiveObjクラス内 void PrimitiveObj::DrawPrimitive() { for(int i=0; i<mVernum; i++) { MATRIX mrx = MGetScale(mScale); m...
by Sigma
8年前
フォーラム: C言語何でも質問掲示板
トピック: c++で弾幕風における”yield”の実現
返信数: 19
閲覧数: 7042

Re: c++で弾幕風における”yield”の実現

今boostを導入していますが、
何故か正しくパスも通したはずなのに"yield.hpp"がないと言われてしまってます…

ファイバーについて調べたらこっちも弾幕風のyieldと近い感覚でできそうですが、
クラスに対応できるのかという心配があります。
by Sigma
9年前
フォーラム: C言語何でも質問掲示板
トピック: c++で弾幕風における”yield”の実現
返信数: 19
閲覧数: 7042

Re: c++で弾幕風における”yield”の実現

分かりやすそうなのでめるぽんさんの案をやってみようと思いますが、 この方法って class task : coroutine { task(): i(0) {} void update() { reenter(this) { i++; yield return; i *= i; yield return; } } private: int i; } コレでメンバ関数のupdateを実行するようにしてもちゃんと中途開始ができますか? あと下まで行ったときに次にupdateを実行するときにはじめに戻りますでしょうか?
by Sigma
9年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリ描画の仕方
返信数: 11
閲覧数: 644

Re: DXライブラリ描画の仕方

まずコードそれぞれのファイル名が記述されてないと正確にはわかりません。
おそらくはaという名で宣言してるのにkyaraという名で参照してるからだと思いますが…
by Sigma
9年前
フォーラム: C言語何でも質問掲示板
トピック: c++で弾幕風における”yield”の実現
返信数: 19
閲覧数: 7042

c++で弾幕風における”yield”の実現

タイトル通り弾幕風のようなyieldで処理を止めて別の処理に移り、 次のループで自分に処理順がきたときに処理の続きをするといったタスクシステムを作りたいのですが、 組み方の検討がつかずに困っています。 一応listでタスクを格納するコンテナを作って処理させようとしています。 タスクを作る、全タスクの更新と描画、いらないタスクの消去の仕組みはできるのですが、 途中で別タスクの処理に移る処理でつまずいてます。 自分的にはカウンタとswitchをつかうような記述はしたくないです。 void task::update() { switch(mCount) { case 0: /*1ループ目の処理*/ ...
by Sigma
9年前
フォーラム: C言語何でも質問掲示板
トピック: ロードした画像などのデータの取り扱い
返信数: 6
閲覧数: 469

Re: ロードした画像などのデータの取り扱い

うーむ、了解しました。
一応グローバル生成したクラスの方法を取ってみます。
ご意見ありがとうございました。

と言ってる合間にも途中で切れるレーザー作りとか弾幕風ライクな記述の再現とか
色々難しい悩みが出てきてしまっているこの現状。
とりあえず調べたり書籍買って勉強してみます…
by Sigma
9年前
フォーラム: C言語何でも質問掲示板
トピック: ロードした画像などのデータの取り扱い
返信数: 6
閲覧数: 469

Re: ロードした画像などのデータの取り扱い

グローバル生成したクラスですかね、やはり…
まあ自分が心配しているのはデータの倉庫として扱う配列なりクラスなりのグローバル化が
果たしてプログラミングのマナー上よろしくないのかどうかってことで前者の方法とその提案された方法を躊躇してました。
で、最初後者のクラス渡しでやってたんですがどうも見た目がわかりにくいし打っててめんどくさかったので…
by Sigma
9年前
フォーラム: C言語何でも質問掲示板
トピック: ロードした画像などのデータの取り扱い
返信数: 6
閲覧数: 469

Re: ロードした画像などのデータの取り扱い

具体的にはシーンごとに使うリソースを一括でロードして リソースを使うクラスを生成するときにハンドルを渡したいです。 クラス生成する度ロードするのはよろしくないので(当たり前ですが) とりあえず先ほどの前者の方で書いてみます //データを格納する領域を用意するヘッダー #define RESOUSE_MAX 1024 static int RESOUSEDATA[RESOUSE_MAX]; int GetDataHnd(int dataID) { return RESOUSEDATA[dataID]; } //1シーンを定義したクラス //メンバ変数にEffectクラスmEffを用意 void ...
by Sigma
9年前
フォーラム: C言語何でも質問掲示板
トピック: ロードした画像などのデータの取り扱い
返信数: 6
閲覧数: 469

ロードした画像などのデータの取り扱い

今プログラムの構造について悩んでおりまして… DXライブラリで画像や音声データなどをロードしてハンドルを取得しますよね。 今リソースを一括ロードして配列に格納、必要なときにハンドルを取得するということをしたいのですが、 予め大きく要素数を確保したグローバルな配列を用意して取得してくるべきか、 ハンドル群を管理するクラスを用意してデータが必要なときにそのクラスを渡して取り出すべきかで悩んでます。 前者はとても楽でプログラムの見た目的にもわかりやすくすっきりした感じになるのですが メモリとかの視点で見たらこれでいいのか不安になってきます。 後者はそのメモリの方では問題はないのですがクラスのやり取り...
by Sigma
9年前
フォーラム: C言語何でも質問掲示板
トピック: 描画された画面を更に変形する方法
返信数: 6
閲覧数: 912

Re: 描画された画面を更に変形する方法

おー、マルチパスレンダリングまさにやりたいと思ってた通りのやり方です。
これで展開オブジェクトも歪みもできそうです。
ありがとうございました!
by Sigma
9年前
フォーラム: C言語何でも質問掲示板
トピック: 描画された画面を更に変形する方法
返信数: 6
閲覧数: 912

Re: 描画された画面を更に変形する方法

えっと、フィルタじゃなくてフォルダで大丈夫です。 複数のレイヤーを1枚にまとめたレイヤー(フォルダ)にして この状態で1枚のレイヤーとして自由変形したいといった意味だったので。 描画結果を更に1つの「 テクスチャ 」として扱えれば東方の歪みエフェクトとか 最新作ラスボスのような3D回転する(というか前後にパタパタする)オブジェクトをカメラの干渉なしにできるので… 一応動画をということなので。 前者の歪み(ボス周りのもやもやとしたやつです) [nico]http://www.nicovideo.jp/watch/sm15382463[/nico]1:55~・5:08~。 背景が変わってももやもや...
by Sigma
9年前
フォーラム: C言語何でも質問掲示板
トピック: 描画された画面を更に変形する方法
返信数: 6
閲覧数: 912

描画された画面を更に変形する方法

初めましてです。 早速なんですけれども、一度描画された画面を更に変形させる方法が思いつかずに悩んでいます。 どういうことかといいますと、   背景1 ー   背景2 ー →描画→描画結果 ー ⇐これを更に潰したり歪みエフェクトなり付けたいんです。   背景3 ー photoshopでいえばフォルダみたいな感覚でやりたいのですが… どうすればいいでしょうか。 検索でもどういうワードでやればいいか分からず行き当たりばったりで探してましたが、 良さ気な記事が見つからず… ちなみにC++でDXライブラリを利用してやろうと思っています。 要は東方の地霊殿以降にあったボス周りの歪みエフェクトを再現したいです。

詳細検索ページへ移動する