簡體   English   中英

Glut初始化功能

[英]Glut Initialisation Function

我只是想特別詢問OpenGL和Microsoft Visual Studio C ++中的glutInit函數。

我瀏覽了GLUT文檔,發現如何使用以下方法聲明它:

void glutInit(int *argcp, char **argv);

我將此代碼插入頂部的main.cpp文件中,但出現錯誤。

當我跟蹤錯誤時,它導致我進入下面的代碼塊。

/* GLUT initialization sub-API. */
GLUTAPI void APIENTRY glutInit(int *argcp, char **argv);
#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
GLUTAPI void APIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int));
#ifndef GLUT_BUILDING_LIB
static void APIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); }
#define glutInit glutInit_ATEXIT_HACK
#endif
#endif

上面的代碼是否已經聲明了glutInit函數,其次您可以使用:

void glutInit(int *argcp, char **argv)main.cpp

在其中添加其他功能,例如核心過剩功能。

為了在VS項目中添加OpenGL庫:

  1. 右鍵單擊該項目,然后選擇“ 屬性”
  2. 打開配置屬性-> C / C ++->預處理器
  3. 在“ 預處理器定義”條目中,添加GLUT_BUILDING_LIB
  4. 在“ 運行時庫”條目中,選擇“ 多線程(/ MT)或多線程調試(/ MTd)”
  5. 打開配置屬性->鏈接器->輸入
  6. 在“ 其他依賴項”條目中,添加glu32.lib; glui32.lib; glut32.lib; opengl32.lib
  7. 在“ 忽略特定的默認庫”條目中,添加libcd.lib

請注意,根據您的OpenGL版本,您可能可以跳過第4步和第7步。

另外,盡管可能與您的問題沒有直接關系,但這是“我最喜歡的”初始化序列:

void CreateSimulation();
void DestroySimulation();
void AdjustSimulation(int iWindowId);

void OnIdle();
void OnDisplay();
void OnReshape(int iWidth,int iHeight);
void OnSpecial(int iKey,int iX,int iY);
void OnKeyboard(unsigned char iKey,int iX,int iY);
void OnMouse(int iButton,int iState,int iX,int iY);

void main()
{
    int iWidth  = glutGet(GLUT_SCREEN_WIDTH);
    int iHeight = glutGet(GLUT_SCREEN_HEIGHT);
    glutInitWindowPosition(0,0);
    glutInitWindowSize(iWidth,iHeight);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
    int iWindowId = glutCreateWindow(WINDOW_TITLE);

    CreateSimulation();
    atexit(DestroySimulation);
    AdjustSimulation(iWindowId);

    GLUI_Master.set_glutIdleFunc(OnIdle);
    GLUI_Master.set_glutDisplayFunc(OnDisplay);
    GLUI_Master.set_glutReshapeFunc(OnReshape);
    GLUI_Master.set_glutSpecialFunc(OnSpecial);
    GLUI_Master.set_glutKeyboardFunc(OnKeyboard);
    GLUI_Master.set_glutMouseFunc(OnMouse);

    glutMainLoop();
}

void CreateSimulation()
{
    ...
}

void DestroySimulation()
{
    ...
}

void AdjustSimulation(int iWindowId)
{
    ...
}

void OnIdle()
{
    ...
}

void OnDisplay()
{
    ...
}

void OnReshape(int iWidth,int iHeight)
{
    ...
}

void OnSpecial(int iKey,int iX,int iY)
{
    switch (iKey)
    {
        ...
    }
}

void OnKeyboard(unsigned char iKey,int iX,int iY)
{
    switch (iKey)
    {
        ...
    }
}

void OnMouse(int iButton,int iState,int iX,int iY)
{
    switch (iButton)
    {
        ...
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM