2022/02/25 06:10 編集
削除
投稿2021/11/18 06:43
編集2023/12/02 10:00[リンク先を参考に、実装したいのですが]
リンク
グーローシェーダーらしいので、このコードを試してみたかったです。
追記:一定時間たって、質問のコードが正しくないのと進展がないという理由
から、ソースコードは、削除します。
追記: }は忘れてました。
追記...何を聞ききたいか分からなくなったので削除。
隣接する面の法線を平均したものになるって普通だと思うけど。
意図的に内容が抹消された質問とありましたので追記します。
最後に読み込むデータが2列ぐらいあるのですが、printfしても表記されません。forループをこれ以上増やすと、アプリケーションが落ちます。とありますように、データの読み取りにミスがあると思います。
で修正したものが、fscanf_s(fp,%f %f%f",&v[(i3)+0],&v[(i3)+1],&v[(i*3)+2]);とな
り、(ここ何でこうなるか分かっていないところだった。数値の読み取りを書きたい。)
//使い方 fscanf_s(fp, "%d", &num) // ファイルから整数
//を読み込む
// printf("%d\n", num); // 読み込んだ整数を表示する
//でした。
//fscanf_s(fp,%f%f%f ",&v[(i3)+0],&v[(i3)+1],&v[(i*3)+2]);
//ファイルに改行があったらfscanf_sにスペースをいれるそう。
//(やはりわかりません。自分で調べてください)
//ファイルに空白があったらfscanf_sにスペースを1個いれるそう。
//ファイルに,があったら fscanf_sに,をいれるそう。
%[^,]は、カンマ以外の文字列
fscanf_s("%[^,],%d,%lf", s, sizeof(s), &n, &x)
chatで調べた。ファイルは確認してない。間違えてたらすいません。自分で調べて。責任とりません。
//vやvnなどは読み飛ばすかどうするかは自分でなんかして。
法線は、objファイルなら法線をglNormal関数に直接値をいれても大丈夫です。objファイル以外は知らないです。修正しました。
1例。fscanf_sのスペースは考慮してない。
1.fscanf_s(fp,%f %f %f ,&v[(i3)+0],&v[(i3)+1],&v[(i3)+2]);
....頂点の数値を読み取る。
2.fscanf_s(fp,"%d//%d//%d%d//%d",&vertex[((3k)+0],&housen[3k+0],&vertex[(3k+1)],&housen[.....省略 番号を読み取る
3.f[0]=vertex[(3k)+0];
f[1]=vertex[(3k)+1];
f[2]=vertex[(3*k)+2]; 番号としました。
4. (例) glVertex3f(v[(3 * (a[0]-1))+0 ], v[(3 * (a[0]-1)) +1], v[(3 * (a[0] -1))+2]);
// printf("%f=v[3 * 21216 +0],v[3 * (21216) +1] =%f,v[3 * 21216 +2]=%f\n",v[3 * (21216) +0],v[3 * 21216 +1], v[3 * 21216 +2]); //f 21217 glVertex3f(v[(3 * (a[1]-1))+0], v[(3 * (a[1]-1))+1], v[(3 * (a[1]-1))+2]); // printf("%f=v[3 * 21215 +0],v[3 * (21215) +1] =%f,v[3 * 21215 +2]=%f\n",v[3 * (21215) + 0], v[3 * 21215 + 1], v[3 * 21215 + 2]); //f21216 glVertex3f(v[(3 * (a[2]-1))+0], v[(3 * (a[2]-1)) +1], v[(3 * (a[2]-1)) +2]); // printf("%f=v[3 * 20399 +0],v[3 * (20399) +1] =%f,v[3 * 20399 +2]=%f\n", v[3 * (20399) + 0], v[3 * 20399 + 1], v[3 * 20399 + 2]); // // //f 20400 glEnd();
4は自己責任でお願いします。全体を通して間違えてても責任とれません.間違えていましたら教えてください。
回答2件
あなたの回答
tips
プレビュー