OpenGL在vs2015上的配置(藍寶書win10)
OpenGL在VS2015上的配置(GLToolS,freeglut)—以藍寶書第五版為例
1、下載藍寶書配套的完整原始碼。
2、新增第一個例項程式碼,例如triangle。新建win32控制檯程式空專案
3、新增庫目錄和包含目錄以及附加依賴項gltools.lib和free_static.lib。或者直接右鍵專案新增現有項gltools.lib和free_static.lib。
4、編譯執行會發生錯誤,比如這樣:
triangle.cpp
1>LINK : warning LNK4098: 預設庫“LIBCMT”與其他庫的使用衝突;請使用 /NODEFAULTLIB:library
1>freeglut_static.lib(freeglut_init.obj) : error LNK2019: 無法解析的外部符號 _sscanf,該符號在函式 _glutInit 中被引用
1>freeglut_static.lib(freeglut_main.obj) : error LNK2019: 無法解析的外部符號 _vfprintf,該符號在函式 _fgError 中被引用
1>freeglut_static.lib(freeglut_main.obj) : error LNK2019: 無法解析的外部符號 ___iob_func,該符號在函式 _fgError 中被引用
1>freeglut_static.lib(freeglut_display.obj) : error LNK2001: 無法解析的外部符號 ___iob_func
1>gltools.lib(GLTools.obj) : error LNK2001: 無法解析的外部符號 ___iob_func
1>freeglut_static.lib(freeglut_joystick.obj) : error LNK2019: 無法解析的外部符號 __snprintf,該符號在函式 _fghJoystickGetOEMProductName 中被引用
5、解決方法:
a、在程式碼前面新增:
#pragma comment(lib,"legacy_stdio_definitions.lib")
編譯後可能是這樣:
1> triangle.cpp
1>LINK : warning LNK4098: 預設庫“LIBCMT”與其他庫的使用衝突;請使用 /NODEFAULTLIB:library
1>freeglut_static.lib(freeglut_main.obj) : error LNK2019: 無法解析的外部符號 ___iob_func,該符號在函式 _fgError 中被引用
1>freeglut_static.lib(freeglut_display.obj) : error LNK2001: 無法解析的外部符號 ___iob_func
1>gltools.lib(GLTools.obj) : error LNK2001: 無法解析的外部符號 ___iob_func
b、接著新增:
#include<stdio.h>
#ifdef __cplusplus
extern"C"
#endif
FILE __iob_func[3] = { __acrt_iob_func(0),__acrt_iob_func(2),__acrt_iob_func(3) };
c、編譯通過,執行完美,大功告成!!!
6、下面是所有程式碼以及結果
a、程式碼:
// Triangle.cpp // Our first OpenGL program that will just draw a triangle on the screen. #pragma comment(lib,"legacy_stdio_definitions.lib") #include<stdio.h> #ifdef __cplusplus extern"C" #endif // FILE __iob_func[3] = { __acrt_iob_func(0),__acrt_iob_func (2),__acrt_iob_func(3) }; #include <GLTools.h> // OpenGL toolkit #include <GLShaderManager.h> // Shader Manager Class #ifdef __APPLE__ #include <glut/glut.h> // OS X version of GLUT #else #define FREEGLUT_STATIC #include <GL/glut.h> // Windows FreeGlut equivalent #endif GLBatch triangleBatch; GLShaderManager shaderManager; /////////////////////////////////////////////////////////////////////////////// // Window has changed size, or has just been created. In either case, we need // to use the window dimensions to set the viewport and the projection matrix. void ChangeSize(int w, int h) { glViewport(0, 0, w, h); } /////////////////////////////////////////////////////////////////////////////// // This function does any needed initialization on the rendering context. // This is the first opportunity to do any OpenGL related tasks. void SetupRC() { // Blue background glClearColor(0.0f, 0.0f, 1.0f, 1.0f); shaderManager.InitializeStockShaders(); // Load up a triangle GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f }; triangleBatch.Begin(GL_TRIANGLES, 3); triangleBatch.CopyVertexData3f(vVerts); triangleBatch.End(); } /////////////////////////////////////////////////////////////////////////////// // Called to draw scene void RenderScene(void) { // Clear the window with current clearing color glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f }; shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed); triangleBatch.Draw(); // Perform the buffer swap to display back buffer glutSwapBuffers(); } /////////////////////////////////////////////////////////////////////////////// // Main entry point for GLUT based programs int main(int argc, char* argv[]) { gltSetWorkingDirectory(argv[0]); glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL); glutInitWindowSize(800, 600); glutCreateWindow("Triangle"); glutReshapeFunc(ChangeSize); glutDisplayFunc(RenderScene); GLenum err = glewInit(); if (GLEW_OK != err) { fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err)); return 1; } SetupRC(); glutMainLoop(); return 0; }
b、結果
不足之處,多多見諒,謝謝
相關推薦
OpenGL在vs2015上的配置(藍寶書win10)
OpenGL在VS2015上的配置(GLToolS,freeglut)—以藍寶書第五版為例 1、下載藍寶書配套的完整原始碼。 2、新增第一個例項程式碼,例如triangle。新建win32控制檯程式空專案 3、新增庫目錄和包含目錄以及附加依賴項
OpenGL藍寶書第七章:立體天空和紋理折射、雙紋理(下)
ever oot 可行性 VR char 都是 pipeline 差異 pac 對照了藍寶書,才知道紅寶書的長處。 reflect函數的原理在紅寶書中有說明,僅僅有
OpenGL藍寶書第五版,VS2012環境配置,親測可用。
下載OpenGL所需的包,並解壓好。連結http://download.csdn.net/download/ewtab/10241388 1、配置freeglut 將freeglut——include——GL裡面的三個.h檔案(除了glut.h)複製到vs2012安裝目錄
win10下的iis的配置(服務於asp.net)
win10下的iis的配置和win7下的是類似的。 1.右鍵開始,開啟控制面板,進入解除安裝程式中,勾上如下圖所示的專案,即可裝上iis。 2.重啟後搜尋iis,進入iis配置中。點選網站,右鍵新建網站,填入網站名稱。 這裡是個關鍵,應用池要改
opengl藍寶書學習筆記1_3D圖形技術和術語介紹
1將數學和圖形資料轉換成3D空間影象的操作叫做渲染(Rending) 渲染過程中出現的其他一些屬性和操作: 1.1變換(Transformation)和投影(Projection) 頂點(Vertex),能夠通過一種稱為變換矩陣(Transformat
集群之mysql主從配置(windows和linux版)
p s class 本地 -h 路徑 數據庫容災 主從機 混合 二進制文件 起因 由於網站進一步開發運行的需求,要求主機7*24小時運行正常,同時要求能夠防止數據庫災難。考慮到後期的開發程度和業務量,準備向高可用系統進行改變,同時通過負載均衡提高網絡性能。於是第一步就
Apache Shiro學習----配置(與SpringMVC集成)
async 匹配 過濾 -i fig hit http struct 找到 1.web.xml文件中配置 <!--將shiro的配置文件交給Spring監聽器初始化--> <context-param> <param
struts2的xml配置(struts-2.3.15)
names end action apache .org ctype extends fault default <!-- 約束文件 --> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//D
TypeHandler簡介及配置(mybatis源碼篇)
java rtt 當我 mes ons byte[] throws call dstat 作者:南柯夢 Mybatis中的TypeHandler是什麽? 無論是 MyBatis 在預處理語句(PreparedStatement)中設置一個參數時,還是從結果集中取出一
Traffic-Server配置(待補充和更新)
exp onf 存儲 空間 時間 cache 1-1 byte conn Server 5.3.2 測試1.裸盤:remap.configmap http://192.168.227.131 http://192.168.227.131:8080 #traffic_ser
Mac下使用PF進行端口轉發和防火墻配置(類似Linux的iptables)
火墻 get 端口 生效 proto 保護 功能 net inet6 在Mac沒有iptables這些,替代的軟件為PF,命令為pfctl。在早些版本用ipfw(<=10.10),後面改為PF。還有一些可以使用OpenBsd,不過這個不太好用。 網上關於pfctl的
kafka+zookeeper環境配置(linux環境單機版)
producer lai ror detail gin prop tex wget start 版本: CentOS-6.5-x86_64 zookeeper-3.4.6 kafka_2.10-0.10.1.0 一.zookeeper下載與安裝 1)下載 $ wge
進行hybrid鏈路配置(華為交換機實驗)
nal 1.4 日誌 erl def mar edit dex 運維 網絡運維 hybrid 實驗報告 姓名: 任永輝 班
Linux Centos 6.5 DNS主從復制配置(bind-9.8.2)
DNS Linux 運維測試環境:OS: Centos 6.5bind : 9.8.2軟件安裝方式: yum主DNS:realserver1 192.168.200.134從DNS:realserver2 192.168.200.135測試服務器: test01 192.168.200.136 第一步
Oracle事務和對象上集(視圖、索引)
Oracle 事務 索引 視圖 張晨 一、Oracle事務·事務的含義:事務是業務上的一個邏輯單元,為了保證數據的所有操作要麽全部完成,要麽全部失敗。1、事務的開始是從一條SQL語句開始,結束於下面的幾種情況:1)顯示提交:輸入commit指令,事務完成提交2)顯示回滾:輸入rollbac
服務器配置(參考how2j教學網站),很不錯,親測可行
最快 .com jdk 參考 tom src 版本 alt 系統選擇 點擊訪問阿裏雲官網地址:http://aliyun.com/ 沒有賬號的點擊aliyun右上角免費註冊,註冊過程大同小異略過不表。 鏡像選擇公共鏡像,其中操作系統選
elasticsearch(es) 集群恢復觸發配置(Local Gateway參數)
ram 這份 驅動程序 數據節點 數據恢復 reference time 影響 相互 elasticsearch(es) 集群恢復觸發配置(Local Gateway) 當你集群重啟時,幾個配置項影響你的分片恢復的表現。 首先,我們需要明白如果什麽也沒配置將會發生什麽。 想
linux軟件安裝、rpm操作命令、本地yum配置(有什麽用)
nbsp -i linux cto 需要 -c 局域網 資源 file 1.yum是什麽? yum的全稱是yellow dog updater,modified,是一個shell前端軟件包管理器;基於RPM包管理,能夠從指定的服務器下載RPM包並自動安裝,可以自動處理依賴性
<親測>CentOS 7.3下Node.js 8.6安裝配置(含NPM以及PM2)
命令 mod profile 添加 data- x64 dsm 解壓 .net CentOS 7.3下Node.js 8.6安裝配置 2017年09月30日 14:12:02 閱讀數:2245更多 個人分類: Nodejs
Nginx反向代理配置(解決跨域問題)
一. 跨域 指的是瀏覽器不能執行其他網站的指令碼。它是由瀏覽器的同源策略造成的,是瀏覽器對 JavaScript 施加的安全限制。 實際開發過程中表現為,如果本地的Html程式碼未提交到伺服器,本地是不能直接呼叫伺服器 API 獲取資料的。 二. Nginx