我试图使我的Java游戏的窗口可调整大小,它使用LWJGL库.根据可追溯到2007年的一些论坛问题,这只能通过解决方法实现.今天仍然如此吗?什么是路?
我正在尝试使用LWJGL库将图像作为openGL的纹理加载.从我到目前为止发现的,我需要将纹理作为ByteBuffer传递给openGL.我现在拥有的是一些正确加载图像的代码,并将其存储在BufferedImage对象中.问题是,我不知道如何从BufferedImage到包含正确格式的数据的ByteBuffer,以便与openGL一起使用(作为函数GL11.glTexImage2D()的输入).非常感谢帮助!
几天前我已经升级到 eclipse 4.2,并且正在开发一个使用 eGit 插件由 git 跟踪的项目。
突然,我想一定是在推送提交后,自动导入提示完全忘记了我项目的类。它所能给出的提示就是java标准库类。
我尝试过重新启动 eclipse,以及清理项目、验证它、执行拉取并查看 .classpath 文件(对我来说这看起来并不特别奇怪)。
如果你看一下截图;在包资源管理器中,您可以看到列出的名为 SceneNode" 的类。右侧有一个我正在处理的文件,该文件位于同一项目中,但缺少导入选项,该选项应该存在。
手动编写导入语句可以解决问题,但由于我很懒,我希望恢复导入选项。有没有其他人有这个问题?

编辑:这是我的 .classpath 文件:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="jars/jinput.jar"/>
<classpathentry kind="lib" path="jars/lwjgl.jar">
<attributes>
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="ORRE-v2/natives"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="jars/lzma.jar"/>
<classpathentry kind="lib" path="jars/slick-util.jar"/>
<classpathentry kind="lib" path="jars/slick.jar"/>
<classpathentry kind="lib" path="jars/xom-1.2.8.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="lib" path="jars/lwjgl_util.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,要求我创建一个"在顶部"或3D世界渲染的2D界面.在其他一些论坛上,我读到你可以使用"GluOrtho2D()"作为工作,并在完成后切换回GluPerspective().唯一的问题是,我为它编写的测试代码只显示3D世界,而不是2D四边形.但是,当我禁用3D渲染代码时,四边形会出现在它应该出现的位置.我将代码修剪为仅限openGL的语句,我在下面写下了这些语句.代码是使用Pyglet库用Python编写的.
场景初始化代码:
glViewport(0, 0, width, height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/height, .1, 10000.)
glMatrixMode(GL_MODELVIEW)
glClearDepth(1.0)
glShadeModel(GL_FLAT)
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LEQUAL)
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
Run Code Online (Sandbox Code Playgroud)
帧渲染代码.对builder.buildMap()的调用创建了3D场景,glBegin-glEnd对绘制了一个2D四边形:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)
stage.set3DMode(window.width, window.height)
builder.buildMap()
stage.set2DMode(window.width, window.height)
glBegin (GL_QUADS)
glVertex2i(0, 0)
glVertex2i(0, 200)
glVertex2i(200, 200)
glVertex2i(200, 0)
glEnd()
Run Code Online (Sandbox Code Playgroud)
stage.set3DMode函数:
glDisable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(0, width, 0, height)
glMatrixMode(GL_MODELVIEW)
Run Code Online (Sandbox Code Playgroud)
和stage.set3DMode函数:
glEnable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/float(height), .1, 10000.)
glMatrixMode(GL_MODELVIEW)
Run Code Online (Sandbox Code Playgroud)
我真的希望有人可以指出我的错误!谢谢你帮助我:)
可能重复:
在3D中反转旋转,使对象始终面向相机?
我在3D空间中有一些2D图像,我想一直面对相机.这些对象在一堆变换中(因为我希望它们相对于另一个对象移动,以保持长篇故事).实现这个最简单的方法是什么?
我有一个包含大量数据的生产数据库。我想使用其中的一些数据来运行单元测试,但是在测试过程开始时使用所有这些数据会导致相当长的时间来构建数据库。我想避免这种情况。
我使用该manage.py testserver命令创建了一个测试数据库,然后删除了我不想通过管理界面包含的所有数据。如何创建保留在默认测试数据库中的数据的夹具?
我编写了以下程序来使用std :: chrono:
#include <iostream>
#include <chrono>
int main(int argc, char** argv) {
const long iterationCount = 10000;
long count = 0;
for(long i = 0; i < iterationCount; i++) {
auto start = std::chrono::high_resolution_clock::now();
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
count++;count++;count++;count++;count++;count++;count++;count++;count++;count++;
auto end = std::chrono::high_resolution_clock::now();
auto timeTaken = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start).count();
std::cout << timeTaken << " " << std::endl;
}
} …Run Code Online (Sandbox Code Playgroud) 假设我有这个java代码:
synchronized(someObject)
{
someObject = new SomeObject();
someObject.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
在调用doSomething()时,SomeObject的实例是否仍然被锁定?
我正在尝试将 a 的内容写入std::vector<bool>磁盘到二进制文件中。由于write()许多 STL 输出流的方法采用指向数组本身的指针以及要写入的字节数,因此对于“正常”向量,我最终会执行以下操作:
std::vector<unsigned int> dataVector = {0, 1, 2, 3, 4};
std::fstream outStream = std::fstream("vectordump.bin", std::ios::out | std::ios::binary);
outStream.write((char*) dataVector.data(), dataVector.size() * sizeof(unsigned int));
outStream.close();
Run Code Online (Sandbox Code Playgroud)
但是,这std::vector<bool>是一种特殊情况,因为允许 STL 实现将布尔值打包成单个位。因此,上述方法在技术上不会始终有效,因为未指定数据在内存中的精确布局方式。
有没有什么方法可以序列化/反序列化我的 bool 向量而不必打包/解包数据?
所以我编译了一个小的测试程序,它使用SWIG作为python和C之间的桥梁.程序的主要部分是python文件.这个东西在我自己的电脑上运行正常,但是一旦我将它转移到另一个,它立即抛出"ImportError:DLL加载失败:找不到指定的模块." 错误.我试图通过将它移动到我自己的电脑上的另一个目录来查看它是否是静态编码的文件位置,这仍然可以正常工作.接下来,我在SWIG python包装器中做了一些调试,找出了它加载的DLL; 其文件路径也是正确的.我的另一台PC也有正确的路径.有谁知道我可能忘记了导致此错误的事情?
我在JFrame窗口中编写了一个应用程序,如果需要,可能会弹出一条错误消息.但是,当我调用"JOptionPane.showMessageDialog()"时,应用程序冻结,停止它的唯一方法是使用任务管理器.这是我的代码的精简版:
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.util.concurrent.atomic.AtomicReference;
import javax.swing.JFrame;
public class GameMain {
public JFrame jframe;
public Canvas canvas;
private AtomicReference<Dimension> canvasSize = new AtomicReference<Dimension>();
public void initialize(int width, int height) {
try {
Canvas canvas = new Canvas();
JFrame frame = new JFrame("testapp");
this.canvas = canvas;
this.jframe = frame;
ComponentAdapter adapter = new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
resize();
}
};
canvas.addComponentListener(adapter);
canvas.setIgnoreRepaint(true);
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(canvas);
frame.setVisible(true);
Dimension dim = this.canvas.getSize();
} …Run Code Online (Sandbox Code Playgroud) 所以考虑这样的函数:
public void setTemperature(double newTemperatureValue, TemperatureUnit unit)
Run Code Online (Sandbox Code Playgroud)
其中TemperatureUnit定义为:
public enum TemperatureUnit {celcius, kelvin, fahrenheit}
Run Code Online (Sandbox Code Playgroud)
我理想地想要达到这个目的:
setTemperature(23, celcius);
Run Code Online (Sandbox Code Playgroud)
所以最终我想省略'TemperatureUnit'.通常在枚举值之前的部分,因为这样函数读起来就像是常规文本一样.
现在我可以做一个静态导入来完成这个,但我想知道是否有其他选择,希望同时保持清洁.我听说有人使用声明它们的界面,但这也被认为是不好的做法.
有什么建议?