gpt4 book ai didi

javafx-8 - 请求的纹理尺寸超过最大纹理尺寸

转载 作者:行者123 更新时间:2023-12-03 18:03:15 24 4
gpt4 key购买 nike

在 JavaFx 中,我有一个程序,其中渲染线程有时会因请求的纹理尺寸太大的消息而崩溃。如果我正确读取堆栈跟踪,我猜它发生在 NGCanvas(它可能代表 native 图形 Canvas ,JavaFx Canvas 节点的实现端)中。

我检查了我分配的 Canvas 的尺寸,没有一个接近这个尺寸。现在,因为 JavaFx 在它自己的线程中运行它的渲染,我什至不知道是谁创建的。

有什么办法可以找出谁告诉渲染管道分配如此大的纹理?

java.lang.RuntimeException: Requested texture dimension (65824) requires dimension (0) that exceeds maximum texture size (16384)
at com.sun.prism.es2.ES2RTTexture.getCompatibleDimension(ES2RTTexture.java:135)
at com.sun.prism.es2.ES2ResourceFactory.getRTTWidth(ES2ResourceFactory.java:146)
at com.sun.scenario.effect.impl.prism.ps.PPSDrawable.getCompatibleWidth(PPSDrawable.java:48)
at com.sun.scenario.effect.impl.prism.ps.PPSRenderer.getCompatibleWidth(PPSRenderer.java:153)
at com.sun.scenario.effect.impl.ImagePool.checkOut(ImagePool.java:119)
at com.sun.scenario.effect.impl.Renderer.getCompatibleImage(Renderer.java:116)
at com.sun.scenario.effect.impl.prism.ps.PPSRenderer.getCompatibleImage(PPSRenderer.java:168)
at com.sun.scenario.effect.impl.prism.ps.PPSRenderer.getCompatibleImage(PPSRenderer.java:67)
at com.sun.scenario.effect.Effect.getCompatibleImage(Effect.java:479)
at com.sun.javafx.sg.prism.NGCanvas$RenderInput.filter(NGCanvas.java:1582)
at com.sun.scenario.effect.FilterEffect.filter(FilterEffect.java:185)
at com.sun.javafx.sg.prism.NGCanvas.applyEffectOnAintoC(NGCanvas.java:737)
at com.sun.javafx.sg.prism.NGCanvas.renderStream(NGCanvas.java:1080)
at com.sun.javafx.sg.prism.NGCanvas.renderContent(NGCanvas.java:606)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2053)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1945)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:576)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2053)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1945)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:477)
at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:330)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.lang.Thread.run(Thread.java:745)

根据要求:我使用的环境是linux debian amd64,jdk 1.8 update 66。渲染通过mesa进行。

最佳答案

在 javaFx 中,只允许 javaFx 应用程序线程修改 Canvas 。
尝试使用 Platform.runLater() 将你的绘图调用打包到 graphicsContext 到一个新的 Runnable 中。

关于javafx-8 - 请求的纹理尺寸超过最大纹理尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35092836/

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