setting non-square tarnish texture causes Access Violation

18 views
Skip to first unread message

Nicky Mac

unread,
May 25, 2020, 6:14:10 AM5/25/20
to pyglet-users

I don't  have a problem creating and applying square textures, using windows10 python36 and latest pyglet
but following  tutorials to apply 'tarnish' size 512 x 256 I get an access violation.
Here is th stripped-down code:
#!/usr/bin/env python
import pyglet
from pyglet.gl
 import *
from pyglet import window, image, resource
from pyglet.window import key
from random   import randint
from math     import cos, sin
from glframe  import GLFrame
from fakeglut import glutSolidSphere
from gltools  import gltDrawSphere
from math3d   import M3DMatrix44f, m3dInvertMatrix44

frameCamera = GLFrame()

class MainWindow(window.Window):
    def __init__(self, *args, **kwargs):
        window.Window.__init__(self, *args, **kwargs)
        # Cull backs of polygons
        glCullFace(GL_BACK)
        glFrontFace(GL_CCW)
        glEnable(GL_CULL_FACE)
        glEnable(GL_DEPTH_TEST)

        # get tarnish texture object as texture unit 0
        glActiveTexture(GL_TEXTURE0)
        glEnable(GL_TEXTURE_2D)
        img = image.load('Assets/tarnish.jpg')
        print('set tarnish texture',(img.width,img.height),img.pitch,type(img))
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img.width, img.height, 0, GL_RGBA,
                         GL_UNSIGNED_BYTE, img.get_data('RGBA', img.pitch))
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)        
        glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE)        
        glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE)

which produces:
set tarnish texture (512, 256) -1536 <class 'pyglet.image.ImageData'>
Traceback (most recent call last):
  File "C:\Python\Python36\Dhruve and me\Pyglet\github_tarnish.py", line 105, in <module>
    w = MainWindow(800, 600, caption='OpenGL Cube Maps Camera:Arrow keys', resizable=True)
  File "C:\Python\Python36\Dhruve and me\Pyglet\github_tarnish.py", line 30, in __init__
    GL_UNSIGNED_BYTE, img.get_data('RGBA', img.pitch))
OSError: exception: access violation reading 0x00000234EA147000
>>>.

Nicky Mac

unread,
May 27, 2020, 6:15:46 AM5/27/20
to pyglet-users
Ha!   the access error was caused by specifying RGBA when the image was actually RGB.
Reply all
Reply to author
Forward
0 new messages