Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl glTexImage2d不';我什么也不做_Opengl_Haskell_Textures - Fatal编程技术网

Opengl glTexImage2d不';我什么也不做

Opengl glTexImage2d不';我什么也不做,opengl,haskell,textures,Opengl,Haskell,Textures,这个问题使我困惑。我正在测试一些Haskell到OpenGL的绑定,我创建了一个顶点着色器,一个片段着色器,编译程序,并在转换顶点后在屏幕上绘制一个带纹理的矩形。。。但屏幕是空白的 当我将矩形渲染为白色而不是在片段着色器中使用采样器时,效果很好。当我进入gdebugger并使用选项以存根纹理替换所有纹理时,它也可以正常工作 当我在gdebugger中查看分配的纹理时,没有纹理对象,只有默认的2d纹理。当我在glTexImage2d上设置断点时,我看到它正在被调用,但当我用gdebugger查看它

这个问题使我困惑。我正在测试一些Haskell到OpenGL的绑定,我创建了一个顶点着色器,一个片段着色器,编译程序,并在转换顶点后在屏幕上绘制一个带纹理的矩形。。。但屏幕是空白的

当我将矩形渲染为白色而不是在片段着色器中使用采样器时,效果很好。当我进入gdebugger并使用选项以存根纹理替换所有纹理时,它也可以正常工作

当我在gdebugger中查看分配的纹理时,没有纹理对象,只有默认的2d纹理。当我在glTexImage2d上设置断点时,我看到它正在被调用,但当我用gdebugger查看它时,内存中没有纹理对象出现


发生什么事了?我忘了设置一些环境变量了吗?我很沮丧。关键是我以前有过这个问题,当时我设法解决了,但我忘了问题是什么。我恨我自己>\u>

我无论如何都不是哈斯凯尔人,但试着做最简单的事情,看看你偏离了什么:

#include <GL/glut.h>

double aspect_ratio = 0;

GLuint texID = 0;
unsigned int texBuf[] = {
    0x00FFFFFF,
    0x00FF0000,
    0x0000FF00,
    0x000000FF,    
};

void display(void)
{
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-10*aspect_ratio, 10*aspect_ratio, -10, 10, -10, 10);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glColor3ub(255,255,255);

    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, texID);

    glScalef(8,8,8);
    glTranslatef(-0.5f, -0.5f, 0.0f);
    glBegin(GL_QUADS);
    glTexCoord2f(0,0);
    glVertex2f(0,0);
    glTexCoord2f(1,0);
    glVertex2f(1,0);
    glTexCoord2f(1,1);
    glVertex2f(1,1);
    glTexCoord2f(0,1);
    glVertex2f(0,1);
    glEnd();

    glFlush();
    glFinish();
    glutSwapBuffers();
}

void reshape(int w, int h)
{
    aspect_ratio = (double)w / (double)h;
    glViewport(0, 0, w, h);
}

void idle()
{
    glutPostRedisplay();
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);

    glutInitWindowSize(200,200);
    glutCreateWindow("Aspect Ratio");

    glGenTextures(1, &texID);
    glBindTexture(GL_TEXTURE_2D, texID);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
    glTexImage2D(GL_TEXTURE_2D, 0, 4, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, (char*)texBuf);

    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutIdleFunc(idle);
    glutMainLoop();
    return 0;
}
#包括
双纵横比=0;
GLuint-texID=0;
无符号整数texBuf[]={
0x00FFFFFF,
0x00FF0000,
0x0000FF00,
0x000000FF,
};
作废显示(作废)
{
glEnable(GLU深度试验);
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glMatrixMode(GL_投影);
glLoadIdentity();
格洛托(-10*纵横比,10*纵横比,-10,10,-10,10);
glMatrixMode(GLU模型视图);
glLoadIdentity();
glColor3ub(255255);
glEnable(GL_纹理_2D);
glBindTexture(GL_TEXTURE_2D,texID);
glScalef(8,8,8);
GLTRANSTEF(-0.5f,-0.5f,0.0f);
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2f(0,0);
glTexCoord2f(1,0);
glVertex2f(1,0);
glTexCoord2f(1,1);
glVertex2f(1,1);
glTexCoord2f(0,1);
glVertex2f(0,1);
格伦德();
glFlush();
glFinish();
glutSwapBuffers();
}
空洞重塑(整数w,整数h)
{
纵横比=(双)w/(双)h;
glViewport(0,0,w,h);
}
无效空闲()
{
再发现();
}
int main(int argc,字符**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_深度| GLUT_双精度);
glutInitWindowSize(200200);
窗口(“纵横比”);
glGenTextures(1和texID);
glBindTexture(GL_TEXTURE_2D,texID);
glTexParameteri(GL_纹理2D、GL_纹理包裹S、GL_重复);
glTexParameteri(GL_纹理2D、GL_纹理包裹、GL_重复);
glTexParameteri(GL_纹理2D,GL_纹理MAG_过滤器,GL_最近);
glTexParameteri(GL\u纹理\u 2D,GL\u纹理\u最小\u过滤器,GL\u最近);
glTexImage2D(GL_纹理,0,4,2,2,0,GL_RGBA,GL_无符号字节,(char*)texBuf);
glutDisplayFunc(显示器);
GLUTREFORUNC(重塑);
glutIdleFunc(空闲);
glutMainLoop();
返回0;
}

无论如何,我都不是哈斯凯尔人,但试着做最简单的事情,看看你偏离了什么:

#include <GL/glut.h>

double aspect_ratio = 0;

GLuint texID = 0;
unsigned int texBuf[] = {
    0x00FFFFFF,
    0x00FF0000,
    0x0000FF00,
    0x000000FF,    
};

void display(void)
{
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-10*aspect_ratio, 10*aspect_ratio, -10, 10, -10, 10);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glColor3ub(255,255,255);

    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, texID);

    glScalef(8,8,8);
    glTranslatef(-0.5f, -0.5f, 0.0f);
    glBegin(GL_QUADS);
    glTexCoord2f(0,0);
    glVertex2f(0,0);
    glTexCoord2f(1,0);
    glVertex2f(1,0);
    glTexCoord2f(1,1);
    glVertex2f(1,1);
    glTexCoord2f(0,1);
    glVertex2f(0,1);
    glEnd();

    glFlush();
    glFinish();
    glutSwapBuffers();
}

void reshape(int w, int h)
{
    aspect_ratio = (double)w / (double)h;
    glViewport(0, 0, w, h);
}

void idle()
{
    glutPostRedisplay();
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);

    glutInitWindowSize(200,200);
    glutCreateWindow("Aspect Ratio");

    glGenTextures(1, &texID);
    glBindTexture(GL_TEXTURE_2D, texID);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
    glTexImage2D(GL_TEXTURE_2D, 0, 4, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, (char*)texBuf);

    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutIdleFunc(idle);
    glutMainLoop();
    return 0;
}
#包括
双纵横比=0;
GLuint-texID=0;
无符号整数texBuf[]={
0x00FFFFFF,
0x00FF0000,
0x0000FF00,
0x000000FF,
};
作废显示(作废)
{
glEnable(GLU深度试验);
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glMatrixMode(GL_投影);
glLoadIdentity();
格洛托(-10*纵横比,10*纵横比,-10,10,-10,10);
glMatrixMode(GLU模型视图);
glLoadIdentity();
glColor3ub(255255);
glEnable(GL_纹理_2D);
glBindTexture(GL_TEXTURE_2D,texID);
glScalef(8,8,8);
GLTRANSTEF(-0.5f,-0.5f,0.0f);
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2f(0,0);
glTexCoord2f(1,0);
glVertex2f(1,0);
glTexCoord2f(1,1);
glVertex2f(1,1);
glTexCoord2f(0,1);
glVertex2f(0,1);
格伦德();
glFlush();
glFinish();
glutSwapBuffers();
}
空洞重塑(整数w,整数h)
{
纵横比=(双)w/(双)h;
glViewport(0,0,w,h);
}
无效空闲()
{
再发现();
}
int main(int argc,字符**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_深度| GLUT_双精度);
glutInitWindowSize(200200);
窗口(“纵横比”);
glGenTextures(1和texID);
glBindTexture(GL_TEXTURE_2D,texID);
glTexParameteri(GL_纹理2D、GL_纹理包裹S、GL_重复);
glTexParameteri(GL_纹理2D、GL_纹理包裹、GL_重复);
glTexParameteri(GL_纹理2D,GL_纹理MAG_过滤器,GL_最近);
glTexParameteri(GL\u纹理\u 2D,GL\u纹理\u最小\u过滤器,GL\u最近);
glTexImage2D(GL_纹理,0,4,2,2,0,GL_RGBA,GL_无符号字节,(char*)texBuf);
glutDisplayFunc(显示器);
GLUTREFORUNC(重塑);
glutIdleFunc(空闲);
glutMainLoop();
返回0;
}
我不久前将OpenGL移植到Haskell。它包括一个指向一个非常小的库的链接,该库除其他外,还可以帮助您完成以下任务

也许您可以将这些代码与您必须的代码进行比较,找出差异。

我不久前将OpenGL移植到Haskell。它包括一个指向一个非常小的库的链接,该库除其他外,还可以帮助您完成以下任务


也许您可以将该代码与您必须的代码进行比较,找出差异。

您还可以调用glGetError(),看看它是否试图告诉您出了什么问题……代码中显然存在错误。所以发布一些代码。相关:您也可以调用glGetError(),看看它是否试图告诉您出了什么问题……您的代码中显然存在错误。所以发布一些代码。相关:我没有为纹理设置过滤模式!很明显,这造成了问题。我没有为纹理设置过滤模式!很明显,这造成了问题。