Linuxプログラミング
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
01/09/02 20:31ID:8eEfRqZ20357login:Penguin
02/03/21 03:14ID:AiXx6DVLwidestudioじゃない?
>>355
漏れもインストールしてみた。
Win版だけど…
とりあえず。helpでも読むかね…
ってこれg++やん。。。
コンパイラとリンカをgccに換えれば良いのかな…(ドキドキ
0358348
02/03/27 15:54ID:kfhea9b4音ゲーってことはタイミングよくキーを押させるんですよね?
自分はgetch()関数しか知らないのですが、これでは
キーを押すまで全てが待ってしまいます。
なんかいい方法ないでしょうか?
0359login:Penguin
02/03/27 18:42ID:qRMua0io0360login:Penguin
02/03/27 23:40ID:Md2CuLe+先行入力が効いてしまいそうな感じ...(BASICのINKEY$みたく)
実行速度が速いならだいじょうぶか(でもキーリピートが...)
INPにあたるものは無理かな(curses組んだことないので、なんとも)
0361login:Penguin
02/03/28 20:45ID:a7UA/nCo先行入力なんて全然恐くないと思うが。
キーリピートくらいかかっても全然キーバッファには
たまらないと思う。どうしても必要なら2回目以降の
入力は単にread()して捨てればいいし。
0362login:Penguin
02/03/30 01:51ID:mpZbUyZ2curses使ってるときは、selectはダメでわ?
>>360
おとげーもどき作ったときのソースは、消しちゃってた。
当時のとは別だけど、「たしかこんな感じだったよなー」っての書いたYO!
0363login:Penguin
02/03/30 01:59ID:mpZbUyZ2はい。
inputdemo.cは、コメントが多めに入ってる。
そんかわり、cursesによる表示内容は少なめ、これ。
'q'の入力で終了っす。
0365login:Penguin
02/03/30 19:36ID:dcJw2Jul0366login:Penguin
02/03/30 19:58ID:bTREfqd2gunzip inputdemo.c.gz
で
inputdemo.c
ができませんか?
それでダメなら、とりあえず、
less inputdemo.c.gz
してみて下さい。(ブラウザが、勝手に展開してるのかも)
もし、htmlヘッダみたいなの見えちゃったら、教えて下さいな。
対策考えるです。
これから出かけるんで、失礼。
0367login:Penguin
02/03/30 22:36ID:dcJw2Jul0368366
02/03/30 23:36ID:JPI70+38>>367
よかったよかった。
んで、コメント多めに入れたつもりですけど、わかりにくいと思うんで、
誰でも何でも聞いて下さい。
あと、あまり普通のやり方じゃないかもしれないですし、問題とか
気づいた人、教えてください。煽りも歓迎。勉強させてくださいな。
0369login:Penguin
02/04/05 18:42ID:rMAy0SP7自分は未だにviだけどもっと良い環境にしたい..
emacsの方が良いのかな.
0370おむこさん志望 ◆GqCwfDSA
02/04/05 19:02ID:BMn9N6Vzエディタじゃないけど、devhelp(http://www.devhelp.net)はいいよ。
glibcとかgtk+のリファレンスマニュアルとして重宝してます。
0371369
02/04/06 01:28ID:carhLpBJしかも簡単だし.
ビデオ関連とタイマー覚えたら簡単なゲーム作れそうだね.
基本ライブラリでbmp形式しか使えないのは痛いけど.(スプライト作れない?)
他にimlib使って端末上で2dでグラフィカルなゲームとかも作れそうだ.
0372login:Penguin
02/04/06 01:33ID:mH55Z1Cz開発環境はSAMBA+TELNET使ってWINDOWS2000からエディット
コンパイルするのが一番効率的かと。
0373login:Penguin
02/04/06 01:34ID:uf9JfT1u(1)馴れ合い禁止。(一人で来る事。同伴禁止:いても知らぬ顔)
(2)「大盛りねぎだくギョク」を頼むこと。(並盛りねぎだくギョクも可)
(3)各会場ごとに指定時間厳守で現地集合。
(4)食ったら即帰る。
注)吉野家は家に帰るまでが吉野家です。
http://ex.2ch.net/test/read.cgi/entrance/1017935504/l50
http://www2.mnx.jp/carvancle/yoshigyu/ スレよりぬき等
0374login:Penguin
02/04/06 02:19ID:UVKoCCB3SDL_image ライブラリを使うと、各種画像ファイルを扱えるYO!
http://www.libsdl.org/projects/SDL_image/index.html
Windows だと、これが依存するライブラリも入れなきゃならんので大変っぽいっけど。
他にも SDL には便利なライブラリがあるから、チェックするといいと思われ。
0375login:Penguin
02/04/06 08:59ID:9GH2Tjkfサーフェスに透過色指定できるから、透過色を決めておけばBMP
のピクセル列からスプライトも作れるよ。
0376login:Penguin
02/04/06 10:00ID:Zy9CkOgp折れは、>>375に加えて、スプライト管理関数みたいなの
つくって管理してる。
put_sprite(surface1,x1,y1);
put_sprite(surface2,x2,y2);
.
.
.
flush_sprite();
こんな感じ。
put_sprite()でSDL_Surface *sp[]に並べていく。
flush_sprite()で実際にscreenに背景と重ねてから
SDL_BlitSurface()してSDL_Flip()する。
0377login:Penguin
02/04/07 00:14ID:YTBbGOwM最初にそれはチェックしてましたがWinだと依存問題もあると辛い..
当分は基本ライブラリでなんとかやってみます.でもサンクスコ.
>>375,376
お陰でアニメーションも作れそうです,サンクス!
SDL_Flip使ってるって事はSDL_DOUBLEBUFとSDL_HWSURFACEをSDL_SetVideoModeでフラグ
で入れてるんだよね?
うちのはそれセットしてもSDL_VideoInfo()->hw_availableが1にならんからセットせず
にSDL_UpdateRect使ってるんだけど...
0378login:Penguin
02/04/07 00:19ID:iVBGD2/eそういう状態ならSDL_Flip()は、
SDL_UpdateRect(screen,0,0,0,0);
と同じように振舞うはず。# とバカ一代の記事にかいてあった。
HWSURFACEとかがダメなのは、XFreeとSDLのコンパイル時の問題かな?
それとも、rootで実行するとOnになったりしない?
0379login:Penguin
02/04/07 00:23ID:iVBGD2/eImageMagickのconvertコマンドとかでフォーマット変えてからでも
いいけど、やっぱPNGとか直で使えるのはラク。
a_surface = Image_Load("filename.png");
だけで、フォーマット自動認識だし。
0380login:Penguin
02/04/07 03:51ID:cLABCWjBhttp://sports.2ch.net/test/read.cgi/k1/1017934497/l50
0381login:Penguin
02/04/10 11:30ID:Ps++pzgzすごく簡単らしいんだが..
0382login:Penguin
02/04/10 13:06ID:Ce64lgBnネタですか?マヂですか?
0383login:Penguin
02/04/10 13:22ID:1o5n4Ltskylic?
0384381
02/04/10 15:36ID:Z/tOe28B0385login:Penguin
02/04/10 17:48ID:h8Vq7GPeGlade より20倍楽! Qt より(以下略
Object Pascal 覚えなくちゃいけんけどねぇ。
0386login:Penguin
02/04/10 18:03ID:Ce64lgBnちゃった。。。インストール失敗してたのかなぁ。。。
0387login:Penguin
02/04/10 18:41ID:h8Vq7GPeVer3 くらいで安定するかな?
Ver1 をだましながら使ってた。RH7.1
0388login:Penguin
02/04/11 00:20ID:rg7n5KP/そーなのかな?
Kylix2だけど、とりあえず変な落ちかたとかしたことないよ。
まだ使い込んでないけど。
0389login:Penguin
02/04/11 00:21ID:rg7n5KP/setup.shが変なとこで止まるから、ちょこっと手を加えて
インストールした。
0390login:Penguin
02/04/13 05:49ID:6ipwzKQ/SDL.hだけで音再生はサウンドプログラム未経験の自分には敷居が高すぎた.
0391login:Penguin
02/04/13 12:25ID:5DTUvdcXSDLのサウンドは、バッファを自分で埋めたり初期設定が少し面倒そう
だけど実際にやってみると「waveのメモリイメージを鳴らす」程度なら
意外に簡単でした。「リアルタイムにサウンドバッファを埋めバッファ
を再生する」仕組みが最初から準備されている分、サウンドプログラミ
ングの入門にも適しているかも。
0392login:Penguin
02/04/13 13:27ID:5dKKtM8/最初はSDL_LoadWAV使ってやろうと試みたが鳴らなかったよ.
その後,Mixerの存在を知り
Ada氏のページやhttp://www.kekkai.org/roger/sdlに行ってやっとできた.
原因を調べた所,イベントで音が鳴るようにしてたんだが
SDL_QUITイベントの所で処理しようとしたのが駄目だったよう.
SDL_KEYUPイベントの所で処理したならMixerライブラリ使って成功したから.
とりあえずもう一回やってみるよ.
0393login:Penguin
02/04/14 12:11ID:q7gMr4rAうーん、単音ならいいんだけど、複数音をまぜようとすると、
やはり自前で音つくらないといけないし...
効果音として、A.wav を再生中、A.wavが再発声するときは
mixせずに再生バッファクリアしてA.wav再生、B.wavが
発声するときは、再生中のA.wavにB.wavをmixするようなときって、
どうやる?
ALSA直叩きしていたときは、再生バッファの明示的なクリアや
バッファ残り量を得ることができたらから、
1 A.wav再生中のバッファ残り量をはかる
2 A.wavの残り部分とB.wavをmix
3 再生中のバッファクリア
4 mix.wavを再生
みたいにやってたんだけど、SDLだけできるかな。
やっぱり、サウンド管理用のスレッドをわけないと厳しい?
# SDL_Mixer使って、
# 同じチャンネルで発声→バッファクリア
# 別チャンネルで発声→自動mix
# で幸せ状態なんだけどね。
0394login:Penguin
02/04/17 17:26ID:AZ3pwp4sprintw()系の関数って横幅がウインドウに納まらなかったときは右端で
折り返すけど,日本語(2バイト文字と呼ぶのが正しい?)の1バイト目が
丁度右端に来たときも,何も考えずに2バイト目を次行に送って文字化け
する.なにか回避方法ってある?
printw()以外にもnewwin()で作ったウインドウが日本語に重なると
文字化けするよな…….
Laser5 Linux7.2使ってます.関係ないと思うけど…….
0395login:Penguin
02/04/17 23:34ID:Jy3zu4iaThe following EXTENDED XSI Curses
calls in support of wide (multibyte) characters are not
yet implemented:
とかかいてあるけど...
現状だと、単に2byte文字が通るだけであって、いろんな面倒は
自前でみてあげないといけなさそうだねぇ。
0396394
02/04/23 20:57ID:Gza+0AGcところで日本男児Linuxer諸兄は,コンソール指向(ってなんだ)の
プログラム組むとき,どんなライブラリ使ってるの? 教えてちょ.
できれば
・ダイアログ
・メニュー
・ボタン
とかのありがちな処理ができるライブラリがあればいいんだけど・・・
394の質問も,ダイアログを実装するためのものです・・・
0397login:Penguin
02/04/23 22:19ID:2oWGHR/ndialog系のコマンド使ってshellscriptってのはダメ?
いろいろ派生物があるみたい>dialog。
中には、日本語通るのもきっとあるだろ。
折れは、bashでread 使ったものにするか、Xdialog使うなぁ。
# ruby使ってるときも、Xdialogは便利。
0398login:Penguin
02/04/23 23:35ID:zzZ2k7Bu0399login:Penguin
02/04/24 06:41ID:xMehvO0d0400login:Penguin
02/04/24 09:52ID:VsqRyC8Y「つくれるかどうか」でいったら、「つくれる」。
でもX11の機能としては、無い。自前で実装か、ライブラリさがさないと
だめだと思う。
Etermのソースでも漁ってください。
0401login:Penguin
02/04/24 11:06ID:F5G260Dfレンダー拡張は?
0402login:Penguin
02/04/24 12:42ID:m+3baTMCcursesで改行をさせるようなプログラムって多用されてるんですか?
やるんなら事前に調整してaddstrとかaddchかな.
ダイアログ出したいっていうのはw3mみたいな事やりたいんですか?
それならw3mのmlが参考になるかも.
0403394
02/04/24 17:46ID:Y8k1KMwGC++の勉強のために実用を兼ねてコンソールのアプリを作ってみようと
思いまして.
>402 addstrって……たとえば,新規ウインドウが掛かる部分(の日本語
の2バイト目)を空白文字とかで潰しておくとか?
イメージ的には「日本語編集可能なテキストエディタで,画面のまん
中に『保存しますか? [Y/n]』みたいなダイアログを出す」ということ
を考えています.つまりどの位置に日本語が来るかは不定,と.ついで
に保存する文字/改行コードを指定するラジオボタンとかもあるといい
かなー.
あと,w3mでダイアログってありましたっけ?? [o]とかだと全画面
が切り替わってしまうので(実装的にはこのほうが楽)…….
0404394
02/04/24 18:00ID:Y8k1KMwGしこしこ書いていた……(menu.c).no mouseでコンパイルしてたので
気付かなかった(汗).
これ参考にしてみます.
0405400
02/04/24 21:08ID:ujxu+X0bたのむから、「レンダー拡張」とかいう「おれさま用語」をつかわんでくれ。
http://www.google.co.jp/search?q=%83%8C%83%93%83_%81%5B%8Ag%92%A3&hl=ja&lr=
どういう機能をいってるんだ?
0406login:Penguin
02/04/24 21:53ID:cUx0CTWkこれじゃないの!?
http://www.google.co.jp/search?hl=ja&q=render%8Ag%92%A3&lr=
0407400
02/04/24 22:30ID:ci3ObMz/あ、折れはてっきり399=401かと思ってた。
折れが「自前でどーにかしる!」っていったから、
「X Rendering Extentionでどーよ?」ってつっこんでくれたんだね。
さんくす。
# つーか、今までDRIと同じものかとおもってたよ... > RENDER拡張
# 逝ってくる...
0408400
02/04/24 23:27ID:jSngFYFKhttp://www.eax.com/render/
うーん、What is な文章は多いけど、HowToは少ないな...
0409暇潰し〜
02/04/25 00:37ID:+hViL74o* 連打測定ソフト:レンダ君
* 使い方: command time
* 10秒毎にラップタイムを表示します
* -lcursesつきでコンパイルして下さい
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/time.h>
#include <curses.h>
#include <unistd.h>
static int wait_type(void);
int main(int ac, char **av)
{
int retval;
struct timeval now = {0, 0};
struct timeval start = {0, 0};
int c, i, t, rap;
int timelimit= atoi(av[1]);
int rapt=-1;
c=i=t=rap=0;
system("xset r off"); initscr(); cbreak(); noecho();
getch();
gettimeofday(&start, NULL);
mvprintw(1,0, "数:%d", ++i);
while (t != timelimit) {
retval = wait_type();
if(retval) { getch(); mvprintw(1,0, "数:%d", ++i); }
gettimeofday(&now, NULL);
c = (now.tv_usec >= start.tv_usec) ? 0 : -1;
t = now.tv_sec - start.tv_sec + c;
if (t % 10 == 0 && rapt != t && t) {
mvprintw(t/10+2, 0, "%d:rap %d", i, i-rap); rap=i; rapt=t;
}
mvprintw(0, 0, "time:%02d", t);
refresh();
}
if (t % 10 == 0 && rapt != t) mvprintw(t/10+2, 0, "%d:rap %d", i, i-rap);
mvprintw(0, 0, "time:%02d", t);
mvprintw(t/10+4, 0, "type 'q' to quit");
refresh();
while(getch() != 'q') ;
clear(); endwin(); system("xset r on"); exit(1);
}
static int wait_type(void)
{
fd_set rfds;
struct timeval tv = {0, 1000};
FD_ZERO (&rfds);
FD_SET (0, &rfds);
return select (1, &rfds, NULL, NULL, &tv);
}
0410いきなりsegfくらいましたが
02/04/25 00:45ID:Lc1Q/pwH(;-;)
でも、単純でもおもしろかったり(笑
0411login:Penguin
02/04/25 13:09ID:N7r3K3Uc0412login:Penguin
02/04/25 14:05ID:1gvkucKX最後system("xset r on"); で終了時にonになります.
これは指の筋肉増強の為に作りました.
昔のシュウォッチみたいなもんですね.
0413login:Penguin
02/04/25 18:50ID:N7r3K3Ucあれ?cygwinだからかな?キーリピートきいてるの。。
0415VackerVT_DEFAULT_TAG_STRING
02/05/01 09:48ID:SXVBzGFf所で割き程、エロ画像を見るためのtclプログラム。なずけて
"エロエクスプローラ"と言うものを作って見た。
君達、tclもイケルゼ。
ここからダウンロードしたら、
http://cgi.din.or.jp/~behemoth/cgi-bin/img-box/img20020501094024.tar
名前をeexplorer.tar.gz にかえて、
tar -xvzf eexplorer.tar.gz
とやって、wish ero.tclだかんな。
0416login:Penguin
02/05/01 10:07ID:KFBqztXKおもろいね。
0417Vacker
02/05/02 05:49ID:t8zab81Kまずは、wishと打って、tclのインタプリタを起動しよう。
そうしたら、
text .tx0
と入力してtextウイジットを作ろうぜ。
まあ、ウイジットって言うよりはWindows的に言えばオブジェクト
って呼んでもいいな。
オブジェクトが出来たら、wishが作ったウインドウに張り付け
鳴きゃ行けないよな。そこで、
pack .tx0
とするのさ。どうだい、簡単にエヂターが作れただろ?
0418Vacker
02/05/02 05:50ID:t8zab81Kを押せば入力できるはずさ。[Ctrl]+[o]でoffになる。
この辺りはmuleとおんなじさ。
0419login:Penguin
02/05/28 13:25ID:9EabqzpYSA_SHIRQを指定した場合、同じIRQを共有するドライバは
全てSA_INTERRUPT付きか全てSA_INTERRUPT無しでないといかんと
ゆーよーな話を小耳に挟んだんですが、何かまずい事情があるんでしょうか?
メーカー製のドライバを入れたらエラーでまくりでまともに動作しなかったので
いろいろ調べてみたらSA_INTERRUPT付きと無しのドライバが混じって
同じIRQを共有していたんで。
混ぜたらrequest_irq()が失敗してもよさそうなもんなのに
しっかり成功してのも謎です(kernel 2.2.20)。
0420login:Penguin
02/05/28 14:03ID:HcFeu/kp俺もあまり詳しくはないけど、そのあたりは 2.0->2.2 で変わったyo。
SA_INTERRUPT はハンドラ走行中に割込み禁止するフラグだから、
IRQ の共有とは直接は関係ないんじゃないか?
arch/i386/kernel/irq.c あたりを読んでみればすっきりすると思われ。
0421login:Penguin
02/06/01 19:01ID:GchLRA1jたとえば「ファイル名を変更する」時に行入力を使う場合、
元のファイル名を指定できなければならないんですが……
できればLGPLがいいなぁ
0422login:Penguin
02/06/01 20:01ID:3AZ8uYf00423login:Penguin
02/06/01 22:54ID:1Mas3Mij俺はformライブラリを使った。
多分もっと良い方法もありそうだが、
そこは俺がへたれという事で…
0424421
02/06/02 01:05ID:uSBPGDj60425login:Penguin
02/06/03 20:26ID:pNev0Yh6言語は、Cです。できればLinuxだけではなくて、FreeBSDなどにも対応させたいのですが、
どうやったらいいでしょうか?
#ifdefでスイッチさせることはできるのでしょうか?
0426login:Penguin
02/06/03 23:04ID:cBxac/cnGNU のソース何でも良いから見てみ。
#ifdef 使わなくても、共通ライブラリだけで作れるコードなら
余裕でコンパイル可能。
0427login:Penguin
02/06/17 02:03ID:4QW9IVdBgetenvしようとしたけどNULL返ってくるんですけど。
0428login:Penguin
02/06/20 01:23ID:CphBQpNt0429login:Penguin
02/06/20 01:31ID:PT5TL4d2IFSは、普通は環境変数じゃなくてShell変数。
だから、あらかじめ明示的にexportしてやらないとダメじゃないかな?
0430427
02/06/20 01:41ID:CphBQpNtshell変数は参照できないんですか…
ありがとうございました。
0431login:Penguin
02/06/20 01:51ID:PT5TL4d2shell変数は、shellが個別に内部で持っている変数。
環境変数とはちがうYo!。
どうしても必要なら、export IFSしてから自作プログラムを
execするshell scriptを使えばいいと思う。
04321113
02/06/28 15:53ID:SCOUjbnn0433login:Penguin
02/06/28 22:14ID:l/6ZxngJほれ、単純だけど、ちゃんと機能するcatだ。
#include <stdio.h>
void print_usage(char *me)
{
fprintf(stderr,"Usage: %s filename\n",me);
return;
}
int main(int argc, char **argv)
{
FILE *fp;
char buf[1024];
int i;
if(argc < 2){
print_usage(argv[0]);
exit(1);
}
for(i=1;i<argc;i++){
fp = fopen(argv[i],"r");
if(fp == NULL){
perror(argv[i]);
exit(1);
}
while(fgets(buf,1024,fp)){
fputs(buf,stdout);
}
fclose(fp);
}
return 0;
}
0434login:Penguin
02/06/29 11:55ID:wHqTASTHずれなくするオナジナイやるから、おまいらも、なにかソースうぷしる!!
#!/usr/bin/env ruby
require 'jcode'
$KODE='e'
while gets do
a = $_.gsub(" "," ")
puts a.gsub("\t"," ")
end
0435login:Penguin
02/06/30 22:19ID:ljPApLVf0436login:Penguin
02/07/01 08:34ID:Rzg2qQoAdelete ip; //(;´Д`)ハァハァ
0437login:Penguin
02/07/01 13:08ID:E87x/HNo0438login:Penguin
02/07/01 15:45ID:PPG3DaVN0439login:Penguin
02/07/01 19:36ID:bBNoWQJCdelete[] ip; //(;´Д`)ハァハァ
0440login:Penguin
02/07/03 22:09ID:sv4PfTDc0441login:Penguin
02/07/03 23:31ID:8md+2mdCint *ip = new int(0);
delete[] ip;
}//(;´Д`)ハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァ
0442login:Penguin
02/07/04 01:20ID:gZhxNmSFcout<<"Jesu joy of man's desire(・∀・)"<<endl;
} while (false);
0443login:Penguin
02/07/04 02:48ID:YpwuZxrO0444login:Penguin
02/07/05 12:25ID:19Dq7F42ふつーのserialじゃだめなのか?
0445login:Penguin
02/07/05 21:03ID:AzdKDIXl>>443
どーゆーエラーが出たのか書かんと...
0446login:Penguin
02/07/05 21:26ID:WoeIQI0fインストールしないと動かないだろ。
たまに動くモジュールもあるけど。
0447OpenGLのテスト
02/07/05 21:44ID:bgFWMrqb#include <sys/time.h>
#include <stdlib.h>
#define QX 0.0 /* 球の初期位置のx座標値 */
#define QY 1.5 /* 球の初期位置のy座標値 */
#define QZ (-5.0) /* 球の初期位置のz座標値 */
#define G (-9.8) /* 重力加速度 */
#define V 25.0 /* 初速度 */
#define TSTEP 0.01 /* フレームごとの時間 */
struct timeval tv_now;
struct timeval tv_start; /* 開始時間 */
int nstep=0;
/*
* 地面を描く
*/
void myGround(double height)
{
static GLfloat ground[][4] = {
{ 0.6, 0.6, 0.6, 1.0 },
0448OpenGLのテスト
02/07/05 21:45ID:bgFWMrqb};
int i, j;
glBegin(GL_QUADS);
glNormal3d(0.0, 1.0, 0.0); /* 法線ベクトルの設定 */
/* 10x10 の床 */
for (j = -5; j < 5; j++) {
for (i = -5; i < 5; i++) {
glMaterialfv(GL_FRONT, GL_DIFFUSE, ground[(i + j) & 1]);
/* タイル描画(1つ分) */
glVertex3d((GLdouble)i, height, (GLdouble)j);
glVertex3d((GLdouble)i, height, (GLdouble)(j + 1));
glVertex3d((GLdouble)(i + 1), height, (GLdouble)(j + 1));
glVertex3d((GLdouble)(i + 1), height, (GLdouble)j);
}
}
glEnd();
}
/*
* 画面表示
0449OpenGLのテスト
02/07/05 21:46ID:bgFWMrqbvoid display(void)
{
static GLfloat white[] = { 0.8, 0.8, 0.8, 1.0 }; /* 球の色 */
static GLfloat lightpos[] = { 3.0, 4.0, 5.0, 1.0 }; /* 光源の位置 */
static double px = QX, py = QY, pz = QZ; /* 球の位置 */
/* 画面クリア */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
/* モデルビュー変換行列の初期化 */
glLoadIdentity();
/* 光源の位置を設定 */
glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
/* 視点の移動(物体の方を奥に移す)*/
glTranslated(0.0, -QY, -10.0);
/* シーンの描画 */
myGround(0.0); /* 高さは0 */
0450OpenGLのテスト
02/07/05 21:47ID:bgFWMrqbglTranslated(px, py, pz); /* px, py, pz に移動 */
glMaterialfv(GL_FRONT, GL_DIFFUSE, white);/* 拡散反射光強度の設定 */
glutSolidSphere(0.1, 16, 8); /* 球体 */
glutSwapBuffers();
pz = QZ + V*nstep*TSTEP;
printf("%f\n", pz);
}
void resize(int w, int h)
{
/* ウィンドウ全体をビューポートにする */
glViewport(0, 0, w, h);
/* 透視変換行列の指定 */
glMatrixMode(GL_PROJECTION);
/* 透視変換行列の初期化 */
glLoadIdentity();
gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0);
0451OpenGLのテスト
02/07/05 21:47ID:bgFWMrqb/* モデルビュー変換行列の指定 */
glMatrixMode(GL_MODELVIEW);
}
void mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_UP) {
/* 時刻調査 */
for (;;) {
gettimeofday(&tv_now, NULL);
if ((tv_now.tv_sec - tv_start.tv_sec)
+ (tv_now.tv_usec - tv_start.tv_usec)/1000000
>nstep*TSTEP) {
display();
nstep++;
}
if (nstep == 500){nstep=0;break;}
}
}
break;
0452OpenGLのテスト
02/07/05 21:48ID:bgFWMrqbbreak;
}
}
void keyboard(unsigned char key, int x, int y)
{
/* ESC か q をタイプしたら終了 */
if (key == '\033' || key == 'q') {
exit(0);
}
}
void init(void)
{
/* 初期設定 */
glClearColor(1.0, 1.0, 1.0, 0.0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
}
0453OpenGLのテスト
02/07/05 21:48ID:bgFWMrqbint main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutReshapeFunc(resize);
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);
init();
glutMainLoop();
return 0;
}
0454OpenGoLua
02/07/05 21:51ID:bgFWMrqbコンパイルは
gcc -o gltest gltest.c -L/usr/X11R6/lib -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm
などとやって下さい。
0455login:Penguin
02/07/05 22:48ID:dC/skGRi0456login:Penguin
02/07/05 23:18ID:7jOR47Ou検索したところ、下の 3種類の本が見つかったのですが、
もっておられる方、書評をお聞かせいただけないでしょうか。
プログラミング Linux(アスキー)
http://www.linux.or.jp/bookreview/ProgrammingLinux.html
Linux プログラミング 例題で学ぶUNIXプログラミング環境のすべて(ソフトバンク)
http://www.linux.or.jp/bookreview/LinuxProgramming.html
例題で学ぶLinuxプログラミング GCCからRPMまでオープンソース・アプリケーション技術(ピアソン・エデュケーション)
http://www.ne.jp/asahi/yokohama/juk/LPBE/
上2つのブックレビューを見た感じでは、ソフトバンクの方が良いように思ったのですが…
できればなるべく易しいものが良いかな、と思っています。
■ このスレッドは過去ログ倉庫に格納されています