《OpenGL編程指南》學習之第六章混合、反走樣、霧效和多邊形位移

來源:互聯網
上載者:User

       在學習紅寶書前五章時使用gl.h glut.h標頭檔即可,但是在本章很多書上原始碼通不過編譯,以點參數Pointp.c 為例,會出現如glPointParameterfEXT沒有定義,無法解析的錯誤,網上瞭解到必須使用OpengGL的拓展庫才行。

      下載glew相關檔案後依次放到指定檔案下(如開篇所述)。

      添加#include<gl/glew.h>過程中還有個地方要注意,它必須在gl.h glut.h等標頭檔之前。

      添加完畢後仍有錯誤:

    “ 3 error LNK2001: 無法解析的外部符號 __imp____glewPointParameterfEXT Pointp.obj Pointp”

      通過一番糾結找到解決方案,是OpenGL擴充方面的問題,就點參數這個樣本來說:

      先定義函數指標

      PFNGLPOINTPARAMETERFARBPROC glPointParameterfEXT;//定義函數指標
      PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvEXT;

       檢查顯卡是否支援GL_ARB_point_parameters擴充,其中isExtensionSupported是自訂的一個函數,就是在glGetString( GL_EXTENSIONS )返回的字串裡尋找是否存在指定的副檔名:

     int hasPointParams = isExtensionSupported("GL_ARB_point_parameters");

     如果支援,就可以用wglGetProcAddress函數擷取擴充函數的指標:
      if (hasPointParams)
     {

                //用wglGetProcAddress函數擷取擴充函數的指標

                glPointParameterfEXT = (PFNGLPOINTPARAMETERFARBPROC) wglGetProcAddress("glPointParameterfEXT");

            glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVARBPROC) wglGetProcAddress("glPointParameterfvEXT");

    }

         再使用glPointParameterfEXT和glPointParameterfvEXT就不會有錯了。

      除了點參數這個樣本以外還有好多代碼也是因為這個問題,這裡就不一一列舉了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.