gpt4 book ai didi

c - 无法让 GLEW 工作

转载 作者:太空宇宙 更新时间:2023-11-04 01:40:07 26 4
gpt4 key购买 nike

注意:glGetString(GL_VERSION) 返回:2.1.0 - Build 8.15.10.2361

我已经将 GLEW 安装到 System32,以及 VCDir/lib 和 VCDir/include 目录。所以链接器在找到 GLEW 的必要位时应该没有任何问题。我遇到的麻烦是以下代码:

void foo()
{
Uint32 vboId;

glGenBuffers(1, &vboId);
}

给我以下错误:

unresolved external symbol __imp____glewGenBuffers

这个错误是我决定安装 GLEW 的全部原因。请参阅:unresolved external symbol _glGenBuffers error

除了这个错误之外,还有一些警告有点令人担忧:

Warning 1   warning C4028: formal parameter 3 different from declaration    c:\sdl-1.2.14\include\sdl_opengl.h  4855    1   Prototek
Warning 2 warning C4028: formal parameter 3 different from declaration c:\sdl-1.2.14\include\sdl_opengl.h 4857 1 Prototek
Warning 3 warning C4028: formal parameter 2 different from declaration c:\sdl-1.2.14\include\sdl_opengl.h 4859 1 Prototek
Warning 4 warning C4028: formal parameter 2 different from declaration c:\sdl-1.2.14\include\sdl_opengl.h 4861 1 Prototek
Warning 5 warning C4028: formal parameter 3 different from declaration c:\sdl-1.2.14\include\sdl_opengl.h 4868 1 Prototek
Warning 6 warning C4028: formal parameter 3 different from declaration c:\sdl-1.2.14\include\sdl_opengl.h 4869 1 Prototek

此外,像我为 GLEW 所做的那样,将 SDL 安装到我的 VC inc 和 lib 以及 System32 目录是个好主意吗?

我的文件顶部的#include 看起来像这样:

#include <stdio.h>
#include <glew.h>
#include "sdl.h"
#include "sdl_opengl.h"
#include <gl/GLU.h>
#include <gl/GL.h>

但如果需要,这里是整个代码体:

#include <stdio.h>
#include <glew.h>
#include "sdl.h"
#include "sdl_opengl.h"
#include <gl/GLU.h>
#include <gl/GL.h>

Uint32 loadTexture(char* fileName)
{
Uint32 id;
SDL_Surface *img = NULL;

//load into memory using SDL
img = SDL_LoadBMP(fileName);
//generate an id for this texture
glGenTextures(1, &id);
//use this texture
glBindTexture(GL_TEXTURE_2D, id);
//load the texture into video memory via OpenGL
glTexImage2D(
GL_TEXTURE_2D,
0,
GL_RGB,
img->w,
img->h,
0,
GL_BGR,
GL_UNSIGNED_BYTE,
img->pixels
);

//set mip map settings
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

SDL_FreeSurface(img);

return id;
}

Uint32 tex;

void init()
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 1.0, 0.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);

tex = loadTexture("fireball.bmp");
}
void foo()
{
Uint32 vboId;

glGenBuffers(1, &vboId);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();

glBindTexture(GL_TEXTURE_2D, tex);

glBegin(GL_QUADS);
glTexCoord2f(0.5, 0.5);
glVertex3f(0.25, 0.25, 0.0);


glTexCoord2f(1.0, 0.5);
glVertex3f(0.5, 0.25, 0.0);


glTexCoord2f(1.0, 1.0);
glVertex3f(0.5, 0.5, 0.0);


glTexCoord2f(0.5, 1.0);
glVertex3f(0.25, 0.5, 0.0);
glEnd();
}

int main()
{
Uint32 isRunning = 1;
SDL_Surface *screen = NULL;
SDL_Event event;
Uint32 start;
Uint32 FPS = 30;

SDL_Init(SDL_INIT_EVERYTHING);

screen = SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);

init();

while(isRunning)
{
start = SDL_GetTicks();

while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT: isRunning = 0; break;
}
}

display();

SDL_GL_SwapBuffers();

if(1000 / FPS > SDL_GetTicks() - start)
{
SDL_Delay(1000 / FPS - (SDL_GetTicks() - start));
}
}

SDL_Quit();

return(0);
}

最佳答案

我注意到您没有包含对 glewInit() 的调用,如果您打算使用 glew,请确保在使用它提供的任何 openGL 函数指针之前调用它。

关于c - 无法让 GLEW 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6970228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com