我已经搜索了几个小时,并且无法找到一个简明明确的问题.我有一个应用程序,我需要在屏幕上绘制一个运动场(包括所有音高线).到目前为止,我已经扩展了SurfaceView,并且几乎复制了LunarLander演示的其余部分.应用程序将音高绘制到正确尺寸所需的所有数据都是从插座接收的,该插座也能正常工作.但是,在onDraw()函数的那一刻,我正在绘制每个帧的所有行,这会导致模拟器中相当慢的帧速率(例如~10fps).这是我的onDraw()函数:
@Override
public void onDraw(Canvas canvas) {
canvas.drawARGB(255,0,144,0);
canvas.drawLine(canvas, getFirstLine(), mPaint);
canvas.drawRect(canvas, getFirstRect(), mPaint);
canvas.drawRect(canvas, getSecondRect(), mPaint);
...
canvas.drawRect(canvas, getSecondRect(), mPaint);
drawAnimatedObjects();
}
Run Code Online (Sandbox Code Playgroud)
然后我在这个背景上绘制圆圈和不同的位置.我的问题是如何提高效率?有没有办法可以在应用程序初始化时绘制线条而不必每帧都重绘它们?
谢谢你的帮助.
使用一个基本的例子来说明我的问题,我有2个几乎相同的代码位.
此代码使while循环无限运行.
private boolean loadAsset() {
new Thread(new Runnable() {
@Override
public void run() {
// Do something
loaded = true;
}
}).start();
while (!loaded) {
// System.out.println("Not Loaded");
}
System.out.println("Loaded");
return false;
}
Run Code Online (Sandbox Code Playgroud)
然而,这段代码(即在while循环中执行某些操作)会导致loaded变量被成功评估,并允许while循环中断和方法完成.
private boolean loadAsset() {
new Thread(new Runnable() {
@Override
public void run() {
// Do something
loaded = true;
}
}).start();
while (!loaded) {
System.out.println("Not Loaded");
}
System.out.println("Loaded");
return false;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释为什么会这样吗?
我在使用OpenGL绘图时遇到问题,我需要确切地看到在深度缓冲区中放置了什么值.谁能告诉我如何检索这些值?谢谢克里斯
有一种简单的方法可以将一串浮点数解析为浮点数组吗?我正在编写一个导入器,需要解析一个ascii文件来获取一些值,我只是想知道是否有更简单的方法来执行此操作然后自己搜索所有空白并Float.parseFloat(s)用于每个空格分隔的值.
例如,字符串是
1 0 4 0 26 110.78649609798859 39 249.34908705094128 47 303.06802752888359
我想创建一个浮点数组:
[1, 0, 4, 0, 26, 110.78649609798859, 39, 249.34908705094128, 47, 303.06802752888359]
谢谢您的帮助!
我目前有2个查询(我从互联网上的各个页面中获取),它们执行以下操作:
这些查询分别是
select
c.colname,
c.coltype,
c.collength
from
syscolumns c,
systables t
where
t.tabname = 'user' and
c.tabid = t.tabid
Run Code Online (Sandbox Code Playgroud)
和
select
c.colname,
c.colno,
o.constrtype
from
systables t,
sysconstraints o,
sysindexes i,
syscolumns c
where
t.tabname = 'user' and
c.tabid = t.tabid and
o.tabid = t.tabid and
i.tabid = t.tabid and
o.constrtype in ('R', 'P') and
o.idxname = i.idxname and
( colno = part1 or
colno = part2 or
colno = part3 or
colno = part4 or
colno = …Run Code Online (Sandbox Code Playgroud) 我正在将3D对象(obj或3ds或collada文件)加载到我的openGL应用程序中.3环境非常大(所有轴都有几百米).我的问题是较小的3D物体(即〜<1-2m的数量级)似乎没有得到适当的深度测试.根据相机的变焦,我有时可以看到物体的背面(我一直在使用一个简单的立方体进行测试)或其他面部变得可见/不可见/撕裂.请参阅附图以获得更好的解释.我被引导相信问题是由于启用了mipmapping.我想要禁用mipmapping(有人可以建议一种简单,快速的方法)或者为mipmap对象设置更大的分辨率.还是我完全吠叫错了树?
谢谢
克里斯
我有一个奇怪的问题,我无法理解......我有一个简单的HelloWorld jar,我在Eclipse中构建了Apache Loggingsjar,它的类路径就是jar.我写了一个运行jar的脚本:
#!/bin/sh
export CLASSPATH=lib/*:$CLASSPATH
java -jar HelloWorld.jar
Run Code Online (Sandbox Code Playgroud)
这里的目录结构是一个主目录,其中包含一个HelloWorld.jar和一个lib子目录commons-logging-1.1.1.jar.
运行此脚本工作正常.但是,当我将其HelloWorld.jar放入lib目录(即在一个地方包含所有JAR)并执行时java -jar lib/HelloWorld.jar,我得到:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
Run Code Online (Sandbox Code Playgroud)
错误.为什么?!?!?!?!
我问这个是因为我在OSX上使用JarBundler为HelloWorld应用程序创建了一个Application包,并在MacOS目录中放置了一个修改过的脚本,而所有的lib都放在了Resources/Java目录中.修改后的脚本版本是:
#!/bin/sh
RESOURCE_DIR=$(cd "../Resources"; pwd)
export CLASSPATH=$RESOURCE_DIR/Java/*:$CLASSPATH
java -jar $RESOURCE_DIR/Java/HelloWorld.jar
Run Code Online (Sandbox Code Playgroud)
而且我得到了与上面相同的错误我真的很感激任何帮助理解为什么我不能这样做和/或如何解决它?
我正在修改Qt音频输出示例,如下所示:
void AudioMixer::ReadData(uint8_t *stream, uint32_t len);qint64 Generator::readData(char *data, qint64 len)如果我的理解是正确的,我应该能够QIODevice通过重写Generator::readData方法来操作方法来调用AudioMixer::ReadData方法并将其uint8_t*使用的方法转换AudioMixer为a char*来使用QIODevice.
我认为这在某种程度上是可能的吗?如果是这样,有人可以建议如何进行演员表演吗?如果没有,你能解释一下如何输出uint8_t*使用QIODevice?
为了完整起见,方法是:
void AudioMixer::ReadData(uint8_t *stream, uint32_t len)
{
if(buffer.GetMaximumReadSize() < len)
{
memset(stream, 0, len);
}
else
{
buffer.Read(stream, len);
}
}
Run Code Online (Sandbox Code Playgroud)
和
qint64 Generator::readData(char *data, qint64 len)
{
qint64 total = 0;
while (len - total > 0) {
const qint64 chunk = qMin((m_buffer.size() …Run Code Online (Sandbox Code Playgroud) 我有一个扩展 JButton 的类,因为我使用的自定义外观会忽略 isOpaque() 调用。我的意思是,即使我在它和所有父面板上调用了 setOpaque (false),也会呈现按钮的背景。我已经确认这是公司设计人员的 LAF 的一个问题,所以我只能扩展课程。所以我的问题是,如何实现paint() 方法来不呈现背景而只呈现按钮图标?干杯
已解决:如果有人感兴趣,我想要的答案是使用 button.setContentAreaFilled(false);
java ×5
opengl ×2
android ×1
arrays ×1
buffer ×1
c++ ×1
canvas ×1
database ×1
depth-buffer ×1
informix ×1
io ×1
jar ×1
jbutton ×1
join ×1
macos ×1
mipmaps ×1
ondraw ×1
paint ×1
parsing ×1
performance ×1
pointers ×1
qt ×1
scripting ×1
sql ×1
string ×1
swing ×1
tearing ×1
textures ×1
while-loop ×1
zbuffer ×1