вы можете использовать библиотеку редуксов как глобальное состояние
что-то вроде этого
class Main extends Component{
render(){
return (
<main className={theme.main}>
<Header
title={this.props.headerTitle}
boldTitle={this.state.boldTitle}
/>
<div className={theme.content}>
<Switch>
<Route path={'/page1'} component={Page1}/>
<Route path={'/page2'}component={Page2}
/>
</Switch>
</div>
<Footer/>
</main>
)
}
const mapStateToProps = state =>{
return { headerTitle: state.headerTitle }
}
export default connect(mapStateToProps)(Main)
Page1
class Page1 extends Component{
changeTitle =()=>{
this.props.actions.changeTitle("title from Page1")
}
render(){
return (
<div>
<button onClick={this.changeTitle}>changeTitle</button>
</div>
)
}
const mapDispatchToProps = (dispatch)=> {
return {
actions: bindActionCreators({ changeTitle }, dispatch)
}
}
export default connect(null, mapDispatchToProps)(Page1)
код это не функционально, но это идея как вы можете использовать для этого редукс
JOGL - это библиотека-обертка, которая позволяет использовать OpenGL в языке программирования Java. В настоящее время это эталонная реализация для JSR-231 (Java Bindings for OpenGL) , поэтому он должен быть вашим первым выбором
Если вы также заинтересованы в том, чтобы просто делать 3D-вещи на Java, не беспокоясь обо всех этих низкоуровневых вещах, посмотрите Java3D .
В худшем случае, вы можете посмотреть, как они используют OpenGL для хорошего учебного материала.
Я также провел некоторые базовые разработки для OpenGL на Delphi и Java. Я использовал JOGL, как упомянуто в ответах других, и я должен заключить, что, хотя существует очень мало различий в программировании OpenGL на Java с использованием JOGL и программировании OpenGL на других языках (Delphi, C ++ и т. Д.), Этого просто нет хорошо чувстовать. Это сводило меня с ума, чтобы все это правильно настроить, а потом писать такие вещи, как
gl.glBegin (GL.GL_QUADS)
, кажется, что нужно написать много лишнего gl, GL, GLU
, и это просто мешает вам. Кроме того, я считаю, что производительность была бы намного лучше, если бы вы использовали C ++ или аналогичный, а не Java.
Я не говорю, что нужно отказаться от JOGL (Java + OpenGL), это можно сделать, и на самом деле это не слишком отличается. , но ... как я уже сказал. Попробуйте c ++, если можете.
если вы действительно хотите серьезно заняться трехмерным программированием, вы должны изучить C / C ++, C ++ является стандартом программирования 3d игры
Do it in C++, the bits you'll be using will basically be the same, because there won't be much messing about with pointers, so it's not a major leap of intuition. Also, the C++ bindings are more reliable and (in my experience) the fastest out of all the langauges available (Python in particular REALLY can't do OpenGL).
Also, C++ is always a good thing to learn, it makes you think about programming concepts in much more detail, as opposed to just popping in an ArrayList<> or whatever pre-built class kind-of-serves your purposes =]