请教关于opengl线框模式模式运行WOW的问题

4672人阅读
&&&& 由于最近要交个计算机图像学的作业,所以就想在自己新的台式机上使用OpenGL开发计算机程序,自己的台式机上装了64位的windows操作系统,也安装了VS2010,查找了网上关于如何安装openGL已经如何在VS2010中进行配置,但是程序通过编译后,但是一运行就会出现错误:无法定位程序输入点_glutInitWithExit于动态链接库gult32.dll 上的错误。可是自己就是安装网络上的步骤进行安装的,但是就是报这样的运行错误。网络上也有这个错误的解决办法,许多都说这个gult32.dll版本太低,要使用较高级的版本,但是我试了一下还是不行。于是继续网上搜索,终于找到了一篇文章解决了我的问题。现在我将文章以及文章的出处摘录如下:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
以下一段出自:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
今天调试OpenGl的源程序,编译通过,但一运行就提示,计算机丢失 glut32.dll文件,郁闷的不行,上网查了下,网上提供的绝大多是做法都是,先下载这个文件复制这个文件到 C:\WINDOWS\system 32中,但是照做了后发现依旧不行,折腾了一下午后,突然之间意识到可能是我新装的windows 7系统有关,而且因为装的是64位的,于是,试着将这个 glut32.dll复制到C:\WINDOWS中的SysWOW64的文件夹中,后来就全都ok了,唉,在此特记录下来,提醒以后的各位装了Win
7又装了Vc++ 6.0&的各位朋友注意一下。
  PS:刚开始接触OpenGl的时候难免会遇到一些问题,这些问题可能和程序无关,只是一些编译环境的设置和头文件的安装,特别整理了一下,如下:
(1)将gult32.dll,glut.dll复制到windows系统system32(如果是win 7 64位操作系统,则是C:\WINDOWS中的SysWOW64这个文件下)
(2)将gult32.lib,glut.lib复制到vc的lib目录下
(3)将gult.h复制到vc的include\GL下
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:251554次
积分:2839
积分:2839
排名:第9435名
原创:18篇
转载:264篇
评论:10条
(17)(10)(13)(13)(1)(10)(1)(1)(2)(65)(23)(26)(38)(1)(6)(3)(2)(11)(2)(3)(2)(2)(28)(2)主题 : opengl es 关于深度测试的一些问题.进来讨论.
级别: 新手上路
可可豆: 154 CB
威望: 154 点
在线时间: 172(时)
发自: Web Page
来源于&&分类
opengl es 关于深度测试的一些问题.进来讨论.&&&
我在做opengl es 的2d 方面遇到一些问题,请教下大家. 因为是新手,所有有些地方理解的可能不对.如果不启用深度测试&&&&glEnable(GL_DEPTH_TEST);那么opengl es 是按照先后的顺序 进行渲染的. 如果启用了深度测试 .是不是按照深度测试的结果来渲染了?是不是z轴的坐标就是深度了?我现在遇到的问题是.opengl es 初始化&&&&glMatrixMode(GL_PROJECTION);&&&&glLoadIdentity();&&&&glViewport(0, 0, (GLsizei)w, (GLsizei)h);&&&&&&&&glOrthof(0, w, 0,h,-100,100);&&&&&&&&glMatrixMode(GL_MODELVIEW);&&&&glLoadIdentity(); &&&&glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);&&&&glEnable(GL_DEPTH_TEST);&&&&glDepthFunc(GL_LEQUAL);画第1块贴图&&&&glEnable(GL_TEXTURE_2D);&&&&t1-&BindTexture();&&&&glDrawTexiOES(20,20,0,100,100);&&&&glDisable(GL_TEXTURE_2D);画第2块贴图&&&&&&glEnable(GL_TEXTURE_2D);&&&&t2-&BindTexture();&&&&glDrawTexiOES(30,30,0,100,100);&&&&glDisable(GL_TEXTURE_2D);目前情况&& 1 正常情况 是第二块在第一块上面.&&&&&&&&&&&&&&&&&& 2 我修改第一块 texture 的&&&&glDrawTexiOES(20,20,10,100,100);但是第一块并没有贴到上面来,这个时候z 坐标是不起作用的? 如何是z 坐标起作用了.&&
级别: 骑士
可可豆: 5520 CB
威望: 5520 点
在线时间: 531(时)
发自: Web Page
右手坐标系 所以z应该越小越近 设置成10就更远了 所以会depth test失败。另外glDrawtexiOES iphone支持这个扩展?
级别: 新手上路
可可豆: 154 CB
威望: 154 点
在线时间: 172(时)
发自: Web Page
代码没在iphone上面跑过,只是发现这个论坛opengl es 讨论的特别好.谢谢猪大OpenGL中使用右手坐标系,其中x轴向右,y轴向上,z轴则向着屏幕外面。明白了.还有个问题,为何使用 && GLfloat vertices[] = {&&&&&& 0,0.0,&&&&&&&&&&0,&&&&&&&&0, 100.0,&&&&&&0,&&&&&&&&100.0, 100.0,&&0,&&&&&&&&100.0, 0.0&&,&&0&&&&};&&&&glColor4f(1, 0, 0, 1);&&&&glVertexPointer(3, GL_FLOAT, 0, vertices);&&&&glDrawArrays(GL_TRIANGLE_FAN, 0, 4);&&&&这种这种方式,就是左手坐标系了?
级别: 骑士
可可豆: 5520 CB
威望: 5520 点
在线时间: 531(时)
发自: Web Page
我说错了 视坐标是左手的 z是沿着你到屏幕的方向越来越大
级别: 侠客
可可豆: 1104 CB
威望: 1104 点
在线时间: 896(时)
发自: Web Page
我遇到跟楼主相似的问题。我正将pc一个立方体旋转的例子移到iphone上,但发觉深度测试老不起作用。立方体有个面我染成红色,最先绘画。跟着无论怎么转,红色的面总显示不出来。不知道是我用错了,还是iphone的opengles根本就没有实现深度测试。那个来回答一下,我将工程附上
(23 K) 下载次数:21
级别: 侠客
可可豆: 1104 CB
威望: 1104 点
在线时间: 896(时)
发自: Web Page
哈哈。我知道原因了。犯了一个低级错误。原来使用深度测试,要先创建一个深度缓冲区。创建opengles工程时候,已经有个宏 USE_DEPTH_BUFFER,默认为0的,要改成1。
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版请问opengl如何入门?
请问怎么入门opengl,本人买了蓝宝跟红宝,可是蓝宝只是跟你提供如glPointSize的函数,没有完整程序,我想要绘制一个点都不知道要导入哪些头文件。红宝也是如此,看了半天理论,都不知道怎么入手。请问opengl该怎么入门,或者大神有好的视频教程推荐?
按时间排序
其他几位答主推荐的网站真的很好(我当初学的时候并未有这么齐全的在线教学,花了不少钱买书)蓝皮书和红皮书是要配合着看的,需要指出的是蓝皮书第五版翻译真的非常烂,甚至有些是配图放错了位置。第7版目前是英文版,然后红皮书现在第八版有中文,买是买了,但是读起来兴趣不如旧版。
推荐 《交互式计算机图形学:基于OpenGL的自顶向下方法》 第六版 和 第七版 《交互式计算机图形学:基于WebGL的自顶向下方法》(二选一吧)。结合图形知识,深入浅出,良心翻译,英文原文中有疑似错误的地方都用备注指出。英文PDF下载以及编译示例以及,如果题主说的是第五版,遇到了编译方面的疑惑,看这里:顺便宣传刚开的论坛 :)
看题主的问题,估计是不知道怎么在 Windows 上搭建 OpenGL 运行环境。在 Windows 上搭建 OpenGL 环境确实比较麻烦,讲个比较简单的方法吧,用 GLUT。首先,你需要有个 Visual Studio。版本随意,不要太旧就好。之后去下载一份 GLUT库,包里面有几个 GLUT.h、GLUT.lib、GLUT.dll 之类的,运行 OpenGL 就靠他们了。新建一个 C 或 C++ 工程,写 Hello World 的那种控制台工程就好,将 GLUT 的头文件、静态库、动态库路径都配置好,头文件 include 好。如果不知道怎么做就 Google,这个都不能自己搞定,就别学 OpenGL 了。之后在 main 函数初始化一下 GLUT,就可以调用 glPointSize 之类的函数啦。代码我就不贴了,记得红宝书的附录中有 GLUT 的简单教程,可以先看那个。没有的话 Google,复制一下。另外在别的答案里看见有人推荐用 WebGL 入门,如果题主会 JS 可以考虑。WebGL 包含了大部分 OpenGL 中常用的 API。只要有 Chrome/Edge/FireFox + 文本编辑器就能玩,不要配置环境,十分适合新人。
楼上总结的很好,Opengl tutorial是很新的,适合跟着做不要看红宝的意思是不要先看,太厚了,用到查就可以了还有个网站叫pixel From
scratch好像,挺不错的
上面是英文版,但是给出了两个第三方汉化的链接。翻译的不是很全,大概七成八成左右,可以配合原版食用,每个章节都给出了源码,亲测能运行(一年前)。红书做参考手册用吧,当初看了几章完全写不出东西来。至于蓝么……例子给了一些,但坠痛苦的是它给的库好像只能在vs2008上编译,这个效率efficiency。
别看书了,没用。
已有帐号?
无法登录?
社交帐号登录20:22 提问
新人求教,OPENGL的几个简单问题
要求在OPENGL里绘制一个彩色的三角形,颜色可随时间变换。
#include &iostream&
#define GLEW_STATIC
#include &GL/glew.h&
#include &GLFW/glfw3.h&
// Function prototypes
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode);
// Window dimensions
const GLuint WIDTH = 800, HEIGHT = 600;
// Shaders
const GLchar* vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3\n"
"layout (location = 1) in vec3\n"
"out vec3 ourC\n"
"void main()\n"
"gl_Position = vec4(position, 1.0);\n"
"ourColor =\n"
const GLchar* fragmentShaderSource = "#version 330 core\n"
"in vec3 ourC\n"
"out vec4\n"
"void main()\n"
"color = vec4(ourColor, 1.0f);\n"
// The MAIN function, from here we start the application and run the game loop
int main()
// Init GLFW
glfwInit();
// Set all the required options for GLFW
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
// Create a GLFWwindow object that we can use for GLFW's functions
GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT, "LearnOpenGL", nullptr, nullptr);
glfwMakeContextCurrent(window);
// Set the required callback functions
glfwSetKeyCallback(window, key_callback);
// Set this to true so GLEW knows to use a modern approach to retrieving function pointers and extensions
glewExperimental = GL_TRUE;
// Initialize GLEW to setup the OpenGL Function pointers
glewInit();
// Define the viewport dimensions
glViewport(0, 0, WIDTH, HEIGHT);
// Build and compile our shader program
// Vertex shader
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glCompileShader(vertexShader);
// Check for compile time errors
GLchar infoLog[512];
glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);
if (!success)
glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);
std::cout && "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" && infoLog && std::
// Fragment shader
GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
glCompileShader(fragmentShader);
// Check for compile time errors
glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success);
if (!success)
glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog);
std::cout && "ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n" && infoLog && std::
// Link shaders
GLuint shaderProgram = glCreateProgram();
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
glLinkProgram(shaderProgram);
// Check for linking errors
glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
if (!success) {
glGetProgramInfoLog(shaderProgram, 512, NULL, infoLog);
std::cout && "ERROR::SHADER::PROGRAM::LINKING_FAILED\n" && infoLog && std::
glDeleteShader(vertexShader);
glDeleteShader(fragmentShader);
// Set up vertex data (and buffer(s)) and attribute pointers
GLfloat vertices[] = {
// Positions
0.5f, -0.5f, 0.0f,
1.0f, 0.0f, 0.0f,
// Bottom Right
-0.5f, -0.5f, 0.0f,
0.0f, 1.0f, 0.0f,
// Bottom Left
0.5f, 0.0f,
0.0f, 0.0f, 1.0f
GLuint VBO, VAO;
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &VBO);
// Bind the Vertex Array Object first, then bind and set vertex buffer(s) and attribute pointer(s).
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
// Position attribute
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(GLfloat), (GLvoid*)0);
glEnableVertexAttribArray(0);
// Color attribute
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(GLfloat), (GLvoid*)(3 * sizeof(GLfloat)));
glEnableVertexAttribArray(1);
glBindVertexArray(0); // Unbind VAO
// Game loop
while (!glfwWindowShouldClose(window))
// Check if any events have been activiated (key pressed, mouse moved etc.) and call corresponding response functions
glfwPollEvents();
// Clear the colorbuffer
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// Draw the triangle
glUseProgram(shaderProgram);
glBindVertexArray(VAO);
glDrawArrays(GL_TRIANGLES, 0, 3);
glBindVertexArray(0);
// Swap the screen buffers
glfwSwapBuffers(window);
// Properly de-allocate all resources once they've outlived their purpose
glDeleteVertexArrays(1, &VAO);
glDeleteBuffers(1, &VBO);
// Terminate GLFW, clearing any resources allocated by GLFW.
glfwTerminate();
// Is called whenever a key is pressed/released via GLFW
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
glfwSetWindowShouldClose(window, GL_TRUE);
以上是彩色三角形的代码,那么要如何实现颜色随时间的变换呢?
按赞数排序
用uniform~~OpenGL(13)
glut下载地址:
(该下载地址下载的压缩包解压后共有5个文件:两个动态库文件:glut.dll、glut32.dll。两个静态入口库文件:glut.lib、glut32.lib。一个头文件glut.h);
glut.h& ---& C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Include/gl (该文件夹下已经包含:gl.h,glu.h两个头文件,用记事本打开glut.h可以看到其中包含两句内容:#include &GL/gl.h&
#include &GL/glu.h&,所以在工程中只需写#include &gl/glut.h&这一个语句就行。glut.h文件中还包括这三句,是静态入口库
#pragma comment (lib, &opengl32.lib&)& /* link with Microsoft OpenGL lib */
#pragma comment (lib, &glu32.lib&)&&&& /* link with OpenGL Utility lib */
#pragma comment (lib, &glut32.lib&)&&& /* link with Win32 GLUT lib */);
动态库的设置:
glut.dll,glut32.dll ---& C:/Windows/SysWOW64&(windows7 64位操作系统)
&&&&&&&&&&&&&&&&&&&&&&&& ---& C:/Windows/System32&& (windows7 32位操作系统)
glut.lib,glut32.lib ---& C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/lib
!!无须!!用宏 #define GLUT_DISABLE_ATEXIT_HACK
好多人glut.h不知道放哪里,自己新建了一个文件夹,其实很多前辈在之前就说过,
要搜索gl这个文件夹,将glut.h放到里面包含gl.h glu.h这两个文件的gl文件夹中.
直接copy下面例程编译即可通过
创建一个Win32控制台应用程序,不要勾选空项目;
// SimpleConsole.cpp : 定义控制台应用程序的入口点。
#include &stdafx.h&
#include &windows.h&
#include &gl/glut.h&
void RenderScene()
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
void SetupRC()
glClearColor(222.0f,0.0f,0.0f,122.0f);
int _tmain(int argc, _TCHAR* argv[])
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE |GLUT_RGBA);
glutCreateWindow(&Simple&);
glutDisplayFunc(RenderScene);
SetupRC();
glutMainLoop();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:231621次
积分:3605
积分:3605
排名:第6770名
原创:103篇
转载:154篇
评论:25条
(3)(3)(6)(4)(6)(3)(1)(5)(8)(14)(3)(2)(1)(2)(1)(7)(1)(1)(2)(1)(6)(6)(11)(1)(3)(6)(1)(11)(1)(2)(6)(20)(19)(15)(10)(12)(10)(11)(10)(2)(2)(2)(9)(9)

我要回帖

更多关于 wow opengl 的文章

 

随机推荐