- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
好吧,我刚买了这本opengl精湛的书(第5版)。不幸的是,我在第一章中偶然发现了如何设置 opengl 本身。这是我执行的步骤。
(1) 首先我安装了Microsoft Visual Studio 2010 C++ Express。
(2) 我下载了需要的库,这个我是直接从opengl superbible官网下载的:http://www.starstonesoftware.com/files/SB5.zip .然后我将文件提取到我的本地文件夹中。
(3) 然后我创建新的空项目。
文件 -> 新建 -> 项目 -> Visual C++ 安装模板 -> 常规 -> 空项目
(4) 为 freeglut 和 gltools 文件头添加额外的包含目录路径。
项目 -> 属性 -> 配置属性 -> (然后我设置配置 = 所有配置) -> C/C++ -> 常规 -> 附加包含目录。
在这里我添加了两个目录:
(a) freeglut : [我的本地路径]\SB5\freeglut-2.6.0\include
(b) gltools : [我的本地路径]\SB5\Src\GLTools\include
(5) 为 freeglut 和 gltools 文件头添加额外的依赖路径。
项目 -> 属性 -> 配置属性 -> (然后我设置配置 = 所有配置) -> 链接器 -> 输入 -> 附加依赖项。
(a)freeglut_static.lib
(b)GLTools.lib
(6) 添加库目录。
项目 -> 属性 -> 配置属性 -> (然后我设置配置 = 所有配置) -> VC++ 目录 -> 库目录。在这里我设置了 freeglut_static.lib 和 GLTools.lib 目录的位置
(a)freeglut_static.lib : [我的本地路径]\SB5\freeglut-2.6.0\VisualStudio2008Static\Release
(b)GLTools.lib : [我的本地路径]\SB5\VisualStudio2008\GLTools\Release
(7) 之后我复制了源代码 (Triangle.cpp) 但我没有忘记在第一行包含 windows.h。
// Triangle.cpp
// Our first OpenGL program that will just draw a triangle on the screen.
#include <Windows.h>
#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;
}
(8) 在第 7 步之后,我构建了项目,一切仍然顺利进行。这是构建结果:
1>------ Build started: Project: superbible1, Configuration: Debug Win32 ------
1> main.cpp
1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>GLTools.lib(GLBatch.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with 'GLTools.lib(GLBatch.obj)' or at 'C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\vc90.pdb'; linking object as if no debug info
1>GLTools.lib(glew.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with 'GLTools.lib(glew.obj)' or at 'C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\vc90.pdb'; linking object as if no debug info
1>GLTools.lib(GLShaderManager.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with 'GLTools.lib(GLShaderManager.obj)' or at 'C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\vc90.pdb'; linking object as if no debug info
1>GLTools.lib(GLTools.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with 'GLTools.lib(GLTools.obj)' or at 'C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\vc90.pdb'; linking object as if no debug info
1>GLTools.lib(GLTriangleBatch.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with 'GLTools.lib(GLTriangleBatch.obj)' or at 'C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\vc90.pdb'; linking object as if no debug info
1> superbible1.vcxproj -> C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\superbible1.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
(9) 运行程序时出现问题。我收到运行时错误。此消息有一个警告对话框:
Unhandled exception at 0x00000000 in superbible1.exe: 0xC0000005: Access violation reading location 0x00000000.
当我选择中断程序时,光标停在这一行:
GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.0f,
0.0f, 0.5f, 0.0f };
好吧,如果我用另一个简单的代码(来自 opengl 红皮书)更改此代码。例如像这样:
#define FREEGLUT_STATIC
#include <Windows.h>
#include <GL\glut.h>
void display(void)
{
/* clear window */
glClear(GL_COLOR_BUFFER_BIT);
/* draw unit square polygon */
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();
/* flush GL buffers */
glFlush();
}
void init()
{
/* set clear color to black */
/* glClearColor (0.0, 0.0, 0.0, 0.0); */
/* set fill color to white */
/* glColor3f(1.0, 1.0, 1.0); */
/* set up standard orthogonal view with clipping */
/* box as cube of side 2 centered at origin */
/* This is default view and these statement could be removed */
/* glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); */
}
int main(int argc, char** argv)
{
/* Initialize mode and open a window in upper left corner of screen */
/* Window title is name of program (arg[0]) */
/* You must call glutInit before any other OpenGL/GLUT calls */
glutInit(&argc,argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("simple");
glutDisplayFunc(display);
init();
glutMainLoop();
}
应用程序可以正常运行。所以我想也许代码有问题,或者可能有什么我想念的。那么有人可以提供帮助吗?
最佳答案
我也才刚刚开始。
如果您要完成所有示例,最好将所有 freeglut/GLTools .h 和 .lib 文件复制到 VC+ 的相关目录中+2010。
您仍然需要在源代码中包含 windows.h 并且仍然需要明确告诉 VC++2010 使用 GLTools.lib(Linker,Input,Additional依赖项)。
This显然解释了如何消除所有困扰您的 pdb 错误。
关于c++ - 另一个OpenGL SuperBible 5th edition的设置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9990513/
好的,所以我最近有了OpenGL SuperBible,并在 Code::: Block上将目录设置为到freeglut和GLTools.h,但是这些#include语句不起作用: #include
有人知道如何配置 Kdevelop 和 cmakelist.txt 以使用 GLTools/GLU/和其他 opengl 库吗? Opengl superbible 提供了配置 VS 和 MAC ID
最近我得到了 OpenGL SuperBible 第 5 版。很高兴我开始阅读,当我读到关于如何正确设置所有内容的第一部分时,我遇到了一些 Google 和其他 StackOverflow 问题都无法
显然,它不会运行。代码直接从提供的来源复制。我把图书馆和标题放在我被告知的地方。运行它会导致某种崩溃。 我请了几个人运行它,他们都说它给了他们一个关于丢失 .dll 的错误并且没有尝试运行该程序,这与
我目前正在尝试通过编写一些 DirectX 10 和 OpenGL 3.3 在 DirectX 和 OpenGL 之间做出决定。我已经完成了 DirectX 的设置,链接和编译相当容易。 OpenGl
由于某种原因,立方体虽然旋转,但它不会在屏幕上移动。 这是通过使用函数 m3dTranslateMatrix44 和 m3dRotationMatrix44 实现的,尽管似乎有更好的方法。 修改了 r
我正在尝试编写并运行“OpenGL SuperBible 第 6 版”一书中的第一个示例,但我无法让它工作。我收到错误: fatal error C1083: No se puede abrir el
好吧,我刚买了这本opengl精湛的书(第5版)。不幸的是,我在第一章中偶然发现了如何设置 opengl 本身。这是我执行的步骤。 (1) 首先我安装了Microsoft Visual Studio
提出这样的问题会让人感到良心不安……尽管如此,我发现用谷歌搜索这个问题出奇地困难。我正在试验 lapack_int LAPACKE_dgesvd( int matrix_order, char j
我正在使用 SuperBible v6 提供的 sb6::application 框架开发一个 OpenGL 应用程序,尽管它在我的计算机上始终运行良好(即使我在我的 DE 之外运行可执行文件),但我
我的系统是 Win 8.1 64 位并使用 VS2013 Express。我可以验证我的视频卡支持最新的 OpenGL 和 OpenCL。我使用了来自作者 github 和网站的最新代码和媒体文件:h
我正在按照 HOWTOBUILD.txt 中的步骤进行操作。我已经为 glfw 构建了必要的文件。链接器第一次提示 glfw。搜索后,似乎我需要链接到 gl3w see this link .我已经为
我精通 C++,但对 openGL 和 OpenGL SuperBible 还很陌生。我想采用先前开发人员在着色器中使用的投影矩阵,并在没有着色器的情况下应用该矩阵。比如我想取下面的(只贴出相关代码)
呼吁专家、大师和任何人帮助阅读和解析 python 中的文件。 第 6 版第 751 页。或第 7 版第 800 页。 Superbible OpenGL 的附录 B. SBM 文件格式似乎在某种程度
我正在尝试编译 OpenGL SuperBible 第 6 版书中的示例。我从他们的 git 存储库中获取了所有内容,我试图通过打开包含的 visual studio 2013 解决方案文件来使用 V
我是 OpenGL 的新手,我现在正在尝试书中的例子,我已经正确地包含了所有的库和头文件,但似乎还有一些不对劲。 这些是我包含的 header : 这是代码: // Triangle.cpp // O
最近我开始学习 OpenGL 并且;反过来,开始阅读使用 OpenGL 4.3 的 OpenGL SuperBible 第 6 版。 我的问题出在 sb6.h 头文件中,因为书中写道这是一个 c++
我在编译 OpenGL Superbible, 6th ed 提供的示例代码时遇到问题.我正在使用 Ubuntu 19.04 和 CMake 3.13.4。我拥有所有必要的依赖项。 CMake 执行没
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
我移植了spinningcube的.cpp版本在那里找到了 python,以便更好地理解 opengl 并创建新的东西。虽然我得到了与第 6 版和第 7 版书籍源代码的编译版本相同的结果,因为两个版本
我是一名优秀的程序员,十分优秀!