glConvolutionFilter
Übersicht

AvaGastBetreff: glConvolutionFilter |
![]() Antworten mit Zitat |
|
---|---|---|
So, ich habe nochmal ein Frage an die openGL-Experten hier im Forum. ![]() Und zwar bekomme ich den ConvolutionFilter nicht zum Laufen. Was ich auch probiere, er spuckt mir ständig nur einen unhandled memory exception error aus. ![]() Code: [AUSKLAPPEN] filter:Float[] = [0.00000067, 0.00002292, 0.00019117, 0.00038771, 0.00019117, 0.00002292, 0.00000067, 0.00002292, 0.00078633, 0.00655965, 0.01330373, 0.00655965, 0.00078633, 0.00002292, 0.00019117, 0.00655965, 0.05472157, 0.11098164, 0.05472157, 0.00655965, 0.00019117, 0.00038771, 0.01330373, 0.11098164, 0.22508352, 0.11098164, 0.01330373, 0.00038771, 0.00019117, 0.00655965, 0.05472157, 0.11098164, 0.05472157, 0.00655965, 0.00019117, 0.00002292, 0.00078633, 0.00655965, 0.01330373, 0.00655965, 0.00078633, 0.00002292, 0.00000067, 0.00002292, 0.00019117, 0.00038771, 0.00019117, 0.00002292, 0.00000067]
size:int = int(sqr(filter.length)) glConvolutionFilter2D(GL_CONVOLUTION_2D, GL_LUMINANCE4, size, size, GL_LUMINANCE, GL_FLOAT, filter) Ich habs bereits mit einem Pointer auf filter ausprobiert und auch mit einem 2D-Array ... und was weis ich nicht alles noch. Ich komme nicht weiter. ![]() HILFE!! ![]() |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
läuft hier ohne Probleme. Habe das mit einem kleinen Faltungskern zur Kantendetektion (3x3 Matrix) ausprobiert und es ging. Bei deinem Faltungskern konnte ich keinen Unterschied sehen (wird wohl ein Blur-Filter sein, der bei meiner Textur nicht gut sichtbar ist). Der Fehler liegt also sicher wo anders. Bzw. wann kommt Memory Acccess Violation? Doch nicht beim Aufruf von glConvolutionFilter2D sondern eher bei glCopyTexImage2D o.ä. wenn er auf data zugreifen will. mfg olli |
||
vertex.dreamfall.at | GitHub |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hi Vertex,
doch doch, der Debugger zeigt mir die Memory Access Violation direkt auf die Zeile glConvolutionFilter2D. ![]() ![]() Lieben Gruss, Ava |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier die texture.png
![]() Mein Faltungskern ist der Laplace-Operator zur Kantenerkennung: Code: [AUSKLAPPEN] | 0 -1 0|
g = |-1 4 -1| | 0 -1 0| Angewandt aufs Bild kommt das dabei heraus: ![]() Code: [AUSKLAPPEN] SuperStrict
Framework BRL.Blitz Import BRL.GLGraphics Import Pub.Glew Import BRL.PNGLoader Local pixmap : TPixmap, .. texture : Int, .. kernel : Float[] GLGraphics(640, 480) glewInit() pixmap = ConvertPixmap(LoadPixmap("texture.png"), PF_RGBA8888) glEnable(GL_TEXTURE_2D) glGenTextures(1, Int Ptr(texture)) glBindTexture(GL_TEXTURE_2D, texture) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) kernel = [ 0.0, -1.0, 0.0, .. -1.0, 4.0, -1.0, .. 0.0, -1.0, 0.0] glEnable(GL_CONVOLUTION_2D) glConvolutionFilter2D(GL_CONVOLUTION_2D, GL_LUMINANCE4, 3, 3, GL_LUMINANCE, GL_FLOAT, kernel) glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixmap.pixels) glDisable(GL_CONVOLUTION_2D) glMatrixMode(GL_PROJECTION) glLoadIdentity() glOrtho(0.0, 640.0, 480.0, 0.0, -1.0, 1.0) glClearColor(1.0, 1.0, 1.0, 0.0) While Not KeyDown(KEY_ESCAPE) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glMatrixMode(GL_MODELVIEW) glLoadIdentity() glBindTexture(GL_TEXTURE_2D, texture) glBegin(GL_QUADS) glTexCoord2f(0.0, 0.0) ; glVertex2f(192.0, 112.0) glTexCoord2f(1.0, 0.0) ; glVertex2f(448.0, 112.0) glTexCoord2f(1.0, 1.0) ; glVertex2f(448.0, 368.0) glTexCoord2f(0.0, 1.0) ; glVertex2f(192.0, 368.0) glEnd() Flip() Wend End Der Faltungskern wird beim Aufruf von glTexImage2D auf die Textur angewandt. mfg olli |
||
vertex.dreamfall.at | GitHub |
- Zuletzt bearbeitet von Vertex am Mo, Jul 07, 2008 17:19, insgesamt 2-mal bearbeitet
![]() |
maximilian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Blitz-Arrays sind anders als C-Arrays. Dementsprechend ist die Übergabe eines Float-Arrays höchst kritisch, und vllt. sollte man da besser einen Pointer nehmen.
edit: aber komisch das es bei Vertex funktioniert o_O das wirds wohl doch nicht sein edit2: vertex' sample geht bei mir auch nicht, ich probier mal ne Version mit Pointer edit3: *hust* keine chance, stürzt andauernd ab ![]() |
||
Variety is the spice of life. One day ignore people, next day annoy them. |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiss zwar keine Lösung, aber ich will Anmerken das das Beispiel von Vertex bei mir Funktioniert:
Code: [AUSKLAPPEN] NVIDIA Systeminformationen-Bericht erstellt am: 07/07/2008 21:40:00
Name des Systems: KOG-PC [Anzeige] Prozessor: Intel(R) Pentium(R) Dual CPU E2160 @ 1.80GHz (1800 MHz) Betriebssystem: Microsoft Windows XP (Service Pack 3) DirectX-Version: 9.0c &GPU-Prozessor: GeForce 8600 GTS ForceWare-Version: 163.71 Speicher: 512 MB Video-BIOS-Version: 60.84.32.00.00 IRQ: 16 Bus: PCI Express x16 [Komponenten] nvCplUIR.dll 1.4.900.10 NVIDIA Control Panel nvCpl.cpl 1.4.900.10 NVIDIA Control Panel Applet nvExpBar.dll 1.4.900.10 NVIDIA Control Panel nvCplUI.exe 1.4.900.10 NVIDIA Control Panel nvViTvSR.dll 6.14.11.6371 NVIDIA Video and TV Server nvViTvS.dll 6.14.11.6371 NVIDIA Video and TV Server nvDispSR.dll 6.14.11.6371 NVIDIA Display Server NVMCTRAY.DLL 6.14.11.6371 NVIDIA Media Center Library NVOGLNT.DLL 6.14.11.6371 NVIDIA Compatible OpenGL ICD nvDispS.dll 6.14.11.6371 NVIDIA Display Server NVCPL.DLL 6.14.11.6371 NVIDIA Compatible Windows 2000 Display driver, Version 163.71 NV4_MINI.SYS 6.14.11.6371 NVIDIA Compatible Windows 2000 Miniport Driver, Version 163.71 NV4_DISP.DLL 6.14.11.6371 NVIDIA Compatible Windows 2000 Display driver, Version 163.71 nvGameSR.dll 6.14.11.6371 NVIDIA 3D Settings Server nvGameS.dll 6.14.11.6371 NVIDIA 3D Settings Server |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie im engl. Forum schon steht, prüft einfach mal, ob glConvolutionFilter2D überhaupt vom Treiber unterstützt wird. Unhadeled Memory Exception kann in dem Zusammenhang geworfen werden, wenn der Funktionspointer = NULL ist.
Zitat: glConvolutionFilter2D is present only if ARB_imaging is returned when glGetString
is called with an argument of GL_EXTENSIONS. |
||
vertex.dreamfall.at | GitHub |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group