游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9748|回复: 7

glActiveTexture运行出错,为何?

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-4-22 23:17:00 | 显示全部楼层 |阅读模式
编译没问题,运行到        glActiveTexture(GL_TEXTURE0); 时出现0xC0000005: Access Violation,注掉这句就没问题,新手,请高人指教,谢了!


//#include "glos.h"
#include <windows.h>
#include <stdio.h>                        // Header File For Standard Input/Output
/*
#include <GL/gl.h>
#include <GL/glu.h>

*/
#include <GL/glew.h>
#include <GL/glut.h>

void myinit(void);

#define ImageWidth 256
#define ImageHeight 256
GLubyte Image[ImageWidth][ImageHeight][3];

GLuint  texturein[2];
void makeImage(void)
{
        int i, j, r,g,b;
        for (i = 0; i < ImageWidth; i++)
        {
                for (j = 0; j < ImageHeight; j++)
                {
                        r=(i*j)%255;
                        g=(4*i)%255;
                        b=(4*j)%255;
                        Image[j][0] = (GLubyte) r;
                        Image[j][1] = (GLubyte) g;
                        Image[j][2] = (GLubyte) b;
                }
        }
}
/* 初始化 alpha 融合的参数 */
void myinit(void)
{   
  //glEnable (GL_BLEND);
  //glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  makeImage();

    glDisable(GL_BLEND);
        glClearColor(0.0f,0.0f,0.0f,0.0f);
        glClearDepth(1.0f);                                                                        // Depth Buffer Setup

        glEnable(GL_DEPTH_TEST);                                                        // Enables Depth Testing
        glDepthFunc(GL_LEQUAL);                                                                // The Type Of Depth Testing To Do
        glShadeModel (GL_FLAT);

        glGenTextures(2, &texturein[0]);
        glActiveTexture(GL_TEXTURE0);
    glEnable(GL_TEXTURE_2D);

          glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

    glTexImage2D(GL_TEXTURE_2D, 0, 3, ImageWidth, ImageHeight, 0,GL_RGB, GL_UNSIGNED_BYTE, Image);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);


}
static void redraw(void)
{
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glBegin(GL_QUADS);
       
        glTexCoord2f(0.0, 0.0); glVertex2f(0.5, 0.0);
        glTexCoord2f(0.0, 1.0); glVertex2f(0.5, 0.5);
        glTexCoord2f(1.0, 1.0); glVertex2f(0.0, 0.5);
        glTexCoord2f(1.0, 0.0); glVertex2f(0.0, 0.0);       

        glTexCoord2f(0.0, 0.0); glVertex2f(0.5, 0.5);
        glTexCoord2f(0.0, 1.0); glVertex2f(0.5, 1.0);
        glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0);
        glTexCoord2f(1.0, 0.0); glVertex2f(1.0, 0.5);       
        glEnd();

        glFlush();

}


static void resize(GLsizei w, GLsizei h)
{
        glViewport(0, 0, w, h);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        if (w <= h)
                gluOrtho2D (0.0, 1.0, 0.0, 1.0*(GLfloat)h/(GLfloat)w);
        else
                gluOrtho2D (0.0, 1.0*(GLfloat)w/(GLfloat)h, 0.0, 1.0);
        glMatrixMode(GL_MODELVIEW);
}


void main(int argc, char **argv)
{

  glutInit(&argc, argv);
  glutInitWindowSize(512, 512);
  glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
  (void) glutCreateWindow("STEVE TEST");


  glutDisplayFunc(redraw);
  glutReshapeFunc(resize);
  
  myinit();

  glutMainLoop();
}

29

主题

157

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2008-4-26 23:14:00 | 显示全部楼层

Re:glActiveTexture运行出错,为何?

把#include <GL/glew.h>删掉。
glew库使用前是要初始化的,否则运行的时候会出错。

或者删掉#include <GL/gl.h>和#include <GL/glu.h>, 然后初始化glew库,初始化方法请查看glew的文档。

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2008-4-28 22:45:00 | 显示全部楼层

Re:glActiveTexture运行出错,为何?

glewInit(NULL)

12

主题

20

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2008-4-30 14:34:00 | 显示全部楼层

Re: Re:glActiveTexture运行出错,为何?

cO_olWinD: Re:glActiveTexture运行出错,为何?

把#include <GL/glew.h>删掉。
glew库使用前是要初始化的,否则运行的时候会出错。

或者删掉#inc...

我试了,不行的.

12

主题

20

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2008-4-30 14:36:00 | 显示全部楼层

Re: Re:glActiveTexture运行出错,为何?

cO_olWinD: Re:glActiveTexture运行出错,为何?

把#include <GL/glew.h>删掉。
glew库使用前是要初始化的,否则运行的时候会出错。

或者删掉#inc...

我试了,不行的.

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2008-5-3 09:20:00 | 显示全部楼层

Re: glActiveTexture运行出错,为何?

牵涉到opengl扩展的问题,不深究的话,
#include <GL/wglew.h>
定义void (APIENTRY *ActiveTexture)(GLenum);

ActiveTexture = wglGetProcAddress("glActiveTexture");/*视显卡而定"glActiveTextureATI","glActiveTexture", "glActiveTextureARB" */
如果ActiveTexture 不为空的话,就可以ActiveTexture(GL_TEXTURE0)和
ActiveTexture(GL_TEXTURE1)了

29

主题

157

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2008-5-3 17:36:00 | 显示全部楼层

Re:glActiveTexture运行出错,为何?

升级一下显卡驱动吧,多层纹理在1.5里已经不用查询扩展就可以直接用了,所以说连glew都用不上。

6

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2010-11-23 15:49:00 | 显示全部楼层

Re:glActiveTexture运行出错,为何?

用glActiveTextureARB代替吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-29 05:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表