2018年5月25日 星期五

Week13 欣儀的blog~~~

Part 1 寫檔
1.New file->Empty file

2.Save as -> week13_fprintf.cpp

#include <stdio.h>
int main()
{
    FILE *fout = fopen("output.txt", "w+");
    ///FILE的指標 FILE開檔  檔名  要寫write新增檔案
    fprintf(fout,"Hello World\n");
    ///寫檔
}

3.執行後會增加一個output的文字檔,檔案裡寫著Hello World

4.File->New->Project , GLUT專案檔

5.將打光陣列之前的程式全部刪除

6.執行時可以出現角度值,並且可以印到output檔裡面
#include <GL/glut.h>
#include <stdio.h>///要檔案
FILE * fout = NULL;///宣告檔案的指標,一開始是空的
float angle=0, angle2=90, angle3=60;///準備三個角度的值
void keyboard(unsigned char key, int x, int y)
{
    if(key=='s' || key=='S' || key=='w' || key=='W')
    {
        if(fout==NULL) fout = fopen("output.txt", "w+");
        ///上面這行,只有第一次按s鍵,只會開一次檔案,且才會還沒有設                定值,所以才fopen
        ///因為第二次按s鍵,fout名花有主,就不會再重複開檔案
        printf("%.3f %.3f %.3f\n", angle, angle2, angle3);
        fprintf(fout,"%.3f %.3f %.3f\n", angle, angle2, angle3);
    }///3個角度的值,印到檔案去
}
7.補上display函式,刪除一些用不到的程式,增加glutKeyboardFunc(keyboard)
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    ///先還沒做事
    glutSwapBuffers();
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(640,480);
    glutInitWindowPosition(10,10);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("GLUT Shapes");

    //glutReshapeFunc(resize);
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    //glutKeyboardFunc(key);
    //glutIdleFunc(idle);
    glClearColor(1,1,1,1);
    //glEnable(GL_CULL_FACE);
    //glCullFace(GL_BACK);
}

8.執行後會出現空白的GLUT Shapes視窗,還有小黑視窗。
在小白視窗按下s鍵,就會在freeglut->bin裡面增加output.txt檔。
繼續在小白視窗按s或w,小黑是就會出現角度的值。


9.進到output.txt裡面會印入剛剛在小黑視窗出現的數值

沒有留言:

張貼留言